Skip to main content
Glama
melt-ai

@themelt/mcp-server

@themelt/mcp-server

MCP server that puts Melt's value-leak discovery logic directly into Claude, Cursor, GitHub Copilot, or any other MCP-compatible agent — so when a tech leader asks their assistant "where is value leaking out of my org," the assistant can call a Melt tool and answer with a real, structured estimate instead of a generic list of vendors.

This is the engineering half of Melt's LLMO (LLM Optimization) distribution strategy. See /llms.txt at the repo root and LLMO_PLAYBOOK.md for the full content + distribution + evaluation plan this server plugs into. Positioning reconciled 2026-07-18 against the live site and current decks — see /CLAUDE.md for the full current product context.

Tools exposed

Tool

What it does

melt_analyze_value_vectors

Free Stage-1 Sandbox estimator. Estimates where value is leaking in one department from headcount, labor cost, and dominant unstructured-input type. No integration required — synthetic/self-reported inputs only.

melt_estimate_annual_leak

Quantifies an already-identified leak pattern in dollars/yr — totalVolume x (leakRatePct/100) x valuePerEvent, generalizing Melt's real "Anatomy of a Scan" methodology (a 29% Gong bypass rate, a 62% Clari override rate, etc., combined into a real $77,235/yr finding).

melt_request_scan

Lead-capture handoff — the move from a directional estimate to a real, log-verified scan (Frictionless POC Playbook Stage 1 → 2). Routes to HubSpot if HUBSPOT_PORTAL_ID/HUBSPOT_FORM_ID are set, otherwise appends to a local leads.jsonl.

Related MCP server: agentladle-mcp-reoi

Worked example

From Melt's Anatomy of a Real AI Value Leak case study — a pre-IPO fintech with $1.5B in annual originations, already running Salesforce, Gong, and Clari:

Signal

Finding

Gong coaching

29% open rate — reps bypassing AI-generated call summaries and duplicating the work manually

Clari forecasting

62% override rate — manual date entries corrupting the model across 8 of 13 forecast cycles

Salesforce → CS handoff

4.2-day lag delaying onboarding after close

Salesforce lead routing

32% manual — automation failures requiring daily manual reassignment

None of this showed up as a problem in the usual adoption dashboards — every tool was "active," which is a different measurement from whether it was actually creating value. Pulling 14 business days of historical logs and tracing where these four patterns cost real time and money added up to a $77,235/year leak.

melt_estimate_annual_leak generalizes this same shape of analysis — totalVolume × (leakRatePct/100) × valuePerEvent — for any leak pattern with a known or hypothesized volume and rate. melt_analyze_value_vectors is the earlier-stage tool for when you don't yet know where to look.

melt_estimate_annual_leak replaced four formula-named calculators (melt_calculate_feature_waste, _dso_cash_flow_impact, _contract_cycle_revenue_unlock, _win_rate_pipeline_impact) that implemented financial formulas from a retired product framing (Thermal Scan / Feature Waste Dollar Amount™ / Delta Engine) — none of which appear in any current Melt material. See CLAUDE.md's "What's Explicitly Retired" section.

Install & run

cd mcp-server
npm install
npm run build
npm start          # runs dist/index.js on stdio

To poke at it interactively before wiring it into a client:

npm run inspect     # launches the MCP Inspector against the built server

Wiring into Claude Desktop / Claude Code

Published on npm — one-line config, no local clone needed:

{
  "mcpServers": {
    "melt": {
      "command": "npx",
      "args": ["-y", "@themelt/mcp-server"]
    }
  }
}

Or from a local clone:

{
  "mcpServers": {
    "melt": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-server/dist/index.js"]
    }
  }
}

One-click install (.mcpb bundle)

For Claude Desktop specifically, themelt-mcp-server.mcpb (Anthropic's MCP Bundle format) installs with a double-click — no terminal, no config file editing. Download the .mcpb from the latest GitHub Release and either double-click it or drag it into Claude Desktop's Settings window.

To rebuild it from source:

npm run build:mcpb   # produces themelt-mcp-server.mcpb

The manifest (mcpb-build/manifest.json) is hand-maintained, not auto-generated from the TypeScript source — if a tool's name, parameters, or description change, update the manifest's tools array to match.

Hosted HTTP transport

dist/index.js (stdio) is what gets configured into a local Claude Desktop/ Cursor install. dist/httpServer.js is an alternate entrypoint implementing the MCP Streamable HTTP transport — what a future "Launch Hosted MCP" web button (LLMO_PLAYBOOK.md, Task 3.2) would point at, so someone can try the tools without installing anything locally.

npm run build
PORT=3000 npm run start:http   # POST MCP JSON-RPC to http://localhost:3000/mcp

Stateless by design — no session ID, a fresh server instance per request. Auth is opt-in via MCP_HTTP_API_KEY (unset by default): with it unset, the endpoint stays fully open — the appropriate trust boundary for what this exposes today (read-only calculators plus a lead-capture form, the same boundary as a public website contact form). Set it before putting anything more sensitive behind this transport:

MCP_HTTP_API_KEY=some-long-random-value PORT=3000 npm run start:http

Every /mcp request then needs Authorization: Bearer some-long-random-value — missing or wrong key gets a 401. Compared with crypto.timingSafeEqual, not a plain string ===, so response timing can't be used to guess the key one byte at a time. Not deployed anywhere yet; this is the code, not a live URL — deploying it (Vercel/Fly/Render/etc.) is a separate, later decision.

Tool-call analytics

Every tool call (success or error) appends one line to mcp-server/analytics.jsonl (gitignored) and logs a one-line summary to stderr — tool name, ok/error, and the error code if applicable. Deliberately excludes dollar figures, contact info, and free-text notes; kept separate from leads.jsonl's PII. This is what answers "is anyone actually using this" and "which tool description is confusing models," independent of llmo-eval's citation-only audit.

Environment variables

Variable

Required

Purpose

HUBSPOT_PORTAL_ID

No

Overrides the default HubSpot Portal ID for melt_request_scan (e.g. to test against a sandbox form).

HUBSPOT_FORM_ID

No

Paired with HUBSPOT_PORTAL_ID.

PORT

No

Port for start:http (default 3000).

MCP_HTTP_API_KEY

No

If set, requires Authorization: Bearer <key> on every hosted-HTTP /mcp request. Unset by default — stdio transport is unaffected either way (no HTTP surface to gate).

Real Portal ID / Form ID defaults are already baked into the code (they aren't secrets — the same values are exposed in any public HubSpot embed snippet), so melt_request_scan reaches the real Melt pipeline with zero configuration. If HubSpot submission fails for any reason, requests fall back to mcp-server/leads.jsonl (gitignored) instead of being lost.

Publishing

Published under the @themelt npm org (created 2026-07-20, owner omer_melt) under the MIT license. npm publish is effectively one-way — npm allows unpublishing within 72 hours but strongly discourages it and blocks it entirely once a package has dependents, so treat any published version as permanent.

Available Tools

3 tools
melt_analyze_value_vectorsAnalyze AI Value VectorsA

Estimates where AI/software value is most likely leaking out of a single department, based on headcount, labor cost, and the type of chaotic/unstructured input it processes manually today. Use this when a tech leader asks where value is being lost or where AI would create the most immediate impact in their org, before any real data integration exists — this is Melt's free Stage-1 Sandbox estimate. Output is directional, from synthetic/self-reported inputs, not an audited figure — for a real finding tied to an actual system log, follow up with melt_request_scan. Also answers what earlier Melt materials called 'AI ROI leverage' or 'AI value vectors' — same estimate, older name.

ParametersJSON Schema
NameRequiredDescriptionDefault
headcountYesTotal operational personnel in the target unit (not the whole company). Must be positive.
departmentTypeYesThe organizational unit being evaluated. Must be one of: Operations, Finance, Engineering, Legal, GBS, Customer Success. Map loosely-named teams to the closest primitive (e.g. RevOps -> Operations, AR/Billing -> Finance, IT -> Engineering, Compliance -> Legal, Shared Services -> GBS, Support/CS/Client Success -> Customer Success).
averageHourlyLaborCostNoBlended fully-loaded hourly labor cost for manual processors in this unit, in USD. Default of 45 is a reasonable US mid-market planning assumption if the caller doesn't know the real figure.
primaryUnstructuredDataInputYesThe dominant chaotic input the unit processes by hand today. Must be one of: PDF_INVOICES, CUSTOMER_TICKETS, LOGISTICS_DOCUMENTS, MANUAL_EXCEL. Choose the closest match: PDF_INVOICES for document-first bottlenecks, CUSTOMER_TICKETS for conversational/support-first bottlenecks, LOGISTICS_DOCUMENTS for shipping/customs/supply-chain paperwork, MANUAL_EXCEL for spreadsheet-driven reconciliation or reporting work.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that the estimate is directional, derived from synthetic/self-reported inputs, not audited, and belongs to a free Stage-1 Sandbox tier. It does not mention auth/permission needs or rate limits, keeping it short of a 5.

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

Conciseness4/5

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

Purpose and usage are front-loaded in the first sentence, and each later sentence adds real value (limitations, fallback tool, alias). It is slightly dense and long, so it is efficient rather than exemplary.

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

Completeness4/5

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

With no output schema and no annotations, the description must stand alone, and it does explain the nature of the return (directional estimate, not an audited figure). Minor gaps remain around the response shape and any required permissions, but an agent has enough to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents headcount, departmentType, labor cost, and input type. The description only names those inputs generically and adds no syntax, enum, or edge-case detail beyond the schema, so baseline 3 is correct.

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

Purpose5/5

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

States a specific verb+resource (estimates where AI/software value is leaking out of a single department) and names the inputs it depends on. It explicitly distinguishes itself from the melt_request_scan sibling and disambiguates a legacy alias ('AI ROI leverage'/'AI value vectors'), so an agent can route without opening the schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use ('tech leader asks where value is being lost... before any real data integration exists') and names the alternative with its selecting condition ('for a real finding tied to an actual system log, follow up with melt_request_scan'). Nothing is left to inference.

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

melt_estimate_annual_leakEstimate Annual Value LeakA

Quantifies a specific, already-identified value-leak pattern in dollars per year — e.g. reps bypassing a coaching tool's summaries, manual overrides corrupting a forecasting model, a manual handoff between two systems. Use this when a leak pattern and its rough volume/rate are already known or hypothesized. This mirrors Melt's real scan methodology (see the fintech case study: a 29% Gong bypass rate, a 62% Clari override rate, and a 4.2-day manual handoff combined into a $77,235/yr finding) — it is a directional estimate from self-reported numbers, not a scan against real system logs. For an audited figure, follow up with melt_request_scan. Covers what earlier Melt materials called 'Feature Waste Dollar Amount' (money leaking on licensed-but-unused software) and general 'AI ROI leverage' calculations — those are older names for this same value-leak math, not a different tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
leakRatePctYesPercentage of that volume exhibiting the leak behavior, between 0 and 100 (e.g. 29 for a 29% bypass rate, 62 for a 62% override rate).
totalVolumeYesTotal annual volume of the relevant event or transaction — e.g. total call briefs generated, total deals closed, total support tickets, total lead assignments.
valuePerEventYesDollar value at risk per leaking event, in USD — e.g. average deal value, loaded hourly cost of manual rework, cost of a delayed handoff day.
leakDescriptionYesPlain-language description of the leak pattern observed or hypothesized — e.g. 'reps bypassing Gong call summaries and logging notes from memory', 'manual Slack handoff between Sales and Customer Success', 'guessed close dates overriding the forecasting model'.

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description fully reveals behavior: it is a directional estimate based on self-reported numbers, not a scan against real logs. It references Melt's real scan methodology and a case study, setting clear expectations about accuracy and methodology.

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

Conciseness4/5

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

The description is rich and informative but somewhat lengthy, including a case study and historical naming clarifications. It is front-loaded with the core purpose, and every sentence adds value, though minor trimming would improve conciseness.

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

Completeness5/5

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 adequately implies the output (dollar estimate per year) via the case study result ($77,235/yr). All parameters are explained, and usage context is fully addressed. The tool is simple and the description covers everything needed.

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

Parameters5/5

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

All four parameters are described in the schema with 100% coverage. The description adds significant value by providing concrete examples (e.g., '29 for a 29% bypass rate' for leakRatePct) and context for leakDescription, making parameter meaning clearer than the schema alone.

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

Purpose5/5

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

The description clearly states the tool quantifies an identified value-leak pattern in dollars per year, with specific examples (e.g., reps bypassing coaching tools). It distinguishes itself from siblings by naming the follow-up tool melt_request_scan for audited figures and clarifies it is not a system scan but a directional estimate.

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

Usage Guidelines5/5

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

Explicitly states when to use: when a leak pattern and rough volume/rate are known or hypothesized. It informs that the estimate is directional from self-reported numbers, and advises following up with melt_request_scan for audited figures. Also clarifies that older terms like 'Feature Waste Dollar Amount' refer to the same functionality.

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

melt_request_scanRequest a Melt ScanA

Submits a request for a Melt scan — the next step after Melt's free Stage-1 Sandbox estimate, moving to a real, log-verified value-leak finding tied to a dollar figure and a source system. Call this only after the user has explicitly asked to be connected with Melt or to book/request a scan — never submit contact details the user hasn't provided themselves. Earlier Melt materials called this a 'Thermal Scan' — same request, current name is just 'a scan' (no fixed 2-week/pricing claim attached anymore).

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoAny free-text context from the conversation that would help a Melt rep prep the call — trigger event, tech stack, urgency.
companyNoThe prospect's company name. Needed to route the request — if omitted, the tool asks for it instead of failing schema validation.
contactNameNoName of the requester, if known.
contactEmailNoBusiness email of the requester, for scan scheduling follow-up. Needed to route the request — if omitted, the tool asks for it instead of failing schema validation.
departmentsOfInterestNoDepartments the requester wants scanned first, if they expressed a preference.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden, and it does meaningfully: it discloses that this sends user contact data to Melt for rep follow-up and that consent must be user-initiated, plus clarifies naming history ('Thermal Scan') and that no fixed 2-week/pricing claim attaches. It still omits what happens after submission (confirmation, SLA, idempotency), so it falls short of a 5.

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

Conciseness4/5

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

Front-loads purpose, then constraints, then legacy naming context — a sensible ordering with no filler. The parenthetical about the old 'Thermal Scan' name is useful disambiguation but slightly tangential, keeping it just short of a 5.

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

Completeness4/5

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

For a zero-required-parameter submission tool with no annotations and no output schema, the description covers purpose, consent preconditions and downstream meaning well. Return/confirmation behavior is left unspecified, but the core invocation guidance is complete.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented in the schema (notes, company, contactName, contactEmail, departmentsOfInterest), setting the baseline at 3. The description adds only the consent rule about contact details, not syntax or format beyond the schema.

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

Purpose5/5

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

Opens with a specific verb+resource ('Submits a request for a Melt scan') and immediately positions it relative to siblings by naming the Stage-1 Sandbox estimate as the prior step. An agent can distinguish this from melt_estimate_annual_leak and melt_analyze_value_vectors without opening any schema.

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

Usage Guidelines5/5

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

Gives an explicit precondition ('only after the user has explicitly asked to be connected with Melt or to book/request a scan') and an explicit prohibition ('never submit contact details the user hasn't provided themselves'). This is unusually strong when-to-use/when-not-to-use guidance, including who must initiate.

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

Tool Schema Changelog

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

  1. 2 tool updatesv0.1.5
    • Changedmelt_analyze_value_vectors1 field changed
      • changedInput schema / properties / departmentType / description
        Previous value: -"The organizational unit being evaluated. Must be one of: Operations, Finance, Engineering, Legal, GBS. Map loosely-named teams to the closest primitive (e.g. RevOps -> Operations, AR/Billing -> Finance, IT -> Engineering, Compliance -> Legal, Shared Services -> GBS)."New value: +"The organizational unit being evaluated. Must be one of: Operations, Finance, Engineering, Legal, GBS, Customer Success. Map loosely-named teams to the closest primitive (e.g. RevOps -> Operations, AR/Billing -> Finance, IT -> Engineering, Compliance -> Legal, Shared Services -> GBS, Support/CS/Client Success -> Customer Success)."
    • Changedmelt_request_scan3 fields changed
      • changedInput schema / properties / company / description
        Previous value: -"The prospect's company name. Required."New value: +"The prospect's company name. Needed to route the request — if omitted, the tool asks for it instead of failing schema validation."
      • changedInput schema / properties / contactEmail / description
        Previous value: -"Business email of the requester, for scan scheduling follow-up. Required."New value: +"Business email of the requester, for scan scheduling follow-up. Needed to route the request — if omitted, the tool asks for it instead of failing schema validation."
      • changedInput schema / properties / departmentsOfInterest / items / enum
        Previous value: -[
        -  "Operations",
        -  "Finance",
        -  "Engineering",
        -  "Legal",
        -  "GBS",
        -  "Sales",
        -  "HR",
        -  "Marketing",
        -  "Product"
        -]New value: +[
        +  "Operations",
        +  "Finance",
        +  "Engineering",
        +  "Legal",
        +  "GBS",
        +  "Sales",
        +  "HR",
        +  "Marketing",
        +  "Product",
        +  "Customer Success"
        +]
  2. 3 tool updatesv0.1.2
    • First observedmelt_analyze_value_vectors
    • First observedmelt_estimate_annual_leak
    • First observedmelt_request_scan

TDQS

A4.3/5.0

Scored across 3 tools

Disambiguation3/5

melt_request_scan is clearly distinct as a contact/submission action, but melt_analyze_value_vectors and melt_estimate_annual_leak both return directional dollar estimates of value leaks, so an agent could easily pick the wrong one. The descriptions do draw a line (department-level Stage-1 sandbox vs. quantifying an already-identified leak pattern), but the boundary is subtle and relies on prior context to be sure which applies.

Naming Consistency5/5

All three tools follow a clean melt_<verb>_<noun> snake_case pattern with consistent verb usage (analyze, request, estimate). No style mixing, camelCase, or vague verbs.

Tool Count4/5

Three tools is on the thin side, but the domain is deliberately narrow — a free directional estimate, a specific-leak estimate, and a scan request form a coherent funnel. It is borderline-lean rather than bloated, so slightly under-provisioned but defensible.

Completeness4/5

The surface covers the apparent intent: preliminary estimate, targeted leak math, and escalation to a paid scan. No obvious dead ends, though there is no way to check scan-request status or retrieve results, a minor gap an agent can work around.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides 48 revenue intelligence tools that let AI assistants search deals, forecast revenue, analyze pipeline risk, manage outreach, and track value delivery via natural language.
    41 npm
    -
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to perform multi-stage residual income projections, discounting, and enterprise value bridging analysis using standardized financial data inputs.
    1
    MIT