# Reported issues for easypaydirect-mcp

Pod holds 11 of 11 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to [easypaydirect-mcp](/mcp/easypaydirect-mcp).

## Most discussed

### Document Query API response fields in the docs

## Summary
Our docs describe tool **inputs** well but not the **response** shape the Query API returns. A short reference of the common fields would help users know what to expect back.

## Tasks
- [ ] Add a "Response fields" section to `docs/tools.md` (or a new `docs/responses.md`) summarizing the key fields per report type (transaction, subscription, plan, vault record)
- [ ] Base it on the NMI Query API response docs (link them); use **synthetic** examples only
- [ ] Cross-link it from the to

[Read the thread](https://github.com/praveendias1180/easypaydirect-mcp/issues/9) · 2026-07-06 · open · 2 comments

### Add MCP client setup examples (Cursor, Windsurf, VS Code)

## Summary
We document Claude Desktop and Claude Code. Let's add copy-paste setup for other MCP hosts so more people can use the server.

## Tasks
- [ ] Add config snippets for **Cursor**, **Windsurf**, and **VS Code** (MCP) to `docs/getting-started.md`
- [ ] Add matching example files under `examples/`, mirroring `examples/claude-desktop-config.json`
- [ ] Keep env-var guidance consistent (`NMI_SECURITY_KEY`, optional `NMI_API_URL`) and recommend a **read-only** key
- [ ] (Optional) note any ho

[Read the thread](https://github.com/praveendias1180/easypaydirect-mcp/issues/5) · 2026-07-06 · closed · 2 comments

### Support reading the key from a file (NMI_SECURITY_KEY_FILE)

## Summary
Allow the gateway key to be read from a file via `NMI_SECURITY_KEY_FILE`, in addition to `NMI_SECURITY_KEY`. This is the standard pattern for Docker secrets / Kubernetes / secret managers, where secrets are mounted as files rather than env vars.

## Tasks
- [ ] In `src/config.ts`, if `NMI_SECURITY_KEY` is unset but `NMI_SECURITY_KEY_FILE` is set, read the key from that file path (trim trailing whitespace/newline)
- [ ] `NMI_SECURITY_KEY` takes precedence if both are set
- [ ] Keep the

[Read the thread](https://github.com/praveendias1180/easypaydirect-mcp/issues/13) · 2026-07-06 · open · 0 comments

### Add ESLint + Prettier

## Summary
Add ESLint + Prettier so contributions stay consistently formatted and lint-clean — good hygiene now that the project is taking PRs.

## Tasks
- [ ] Add ESLint (with `typescript-eslint`) and Prettier as dev dependencies
- [ ] Add a minimal config — recommended TypeScript rules + Prettier formatting (avoid over-strict rules that would churn the existing code)
- [ ] Add `"lint"` and `"format"` scripts to `package.json`
- [ ] Run lint in CI (`.github/workflows/ci.yml`) alongside typechec

[Read the thread](https://github.com/praveendias1180/easypaydirect-mcp/issues/10) · 2026-07-06 · open · 0 comments

### Add --version and --help CLI flags

## Summary
Add `--version` and `--help` flags so users can sanity-check the install without wiring up an MCP client. `npx easypaydirect-mcp --version` is a common expectation.

## Tasks
- [ ] In `src/index.ts`, handle `--version`/`-v` (print the package version) and `--help`/`-h` (print short usage + the env vars), then exit 0 — before starting the stdio server
- [ ] Keep no-arg behavior unchanged (start the MCP server over stdio)
- [ ] Read the version without hard-coding it (import `package.js

[Read the thread](https://github.com/praveendias1180/easypaydirect-mcp/issues/11) · 2026-07-06 · open · 0 comments

### Publish to npm automatically on GitHub Release

## Summary
Automate npm publishing so a new GitHub Release publishes the package — no manual `npm publish` + OTP each time.

## Tasks
- [ ] Add `.github/workflows/publish.yml` triggered on `release: published`
- [ ] Steps: checkout → `setup-node` with the npm registry → `npm ci` → `npm run build` → `npm publish --provenance --access public`
- [ ] Read the token from an `NPM_TOKEN` repo secret (an **automation** token — bypasses 2FA)
- [ ] Enable [npm provenance](https://docs.npmjs.com/generating

[Read the thread](https://github.com/praveendias1180/easypaydirect-mcp/issues/8) · 2026-07-06 · open · 0 comments

### Add a Dockerfile + container usage docs

## Summary
Package the server as a container so it can run with `docker run` instead of requiring a local Node install — handy for self-hosting and CI.

## Tasks
- [ ] Add a small `Dockerfile` (Node 20-slim base) that builds and runs the server over stdio
- [ ] Keep it lean with a multi-stage build (build with dev deps; ship only `dist/` + prod deps)
- [ ] Document usage in `docs/getting-started.md`, passing env vars (`-e NMI_SECURITY_KEY=... -e NMI_API_URL=...`)
- [ ] Note the stdio caveat: MCP

[Read the thread](https://github.com/praveendias1180/easypaydirect-mcp/issues/7) · 2026-07-06 · open · 0 comments

### Add merchant-defined-field filters (1–20) to search_transactions

## Summary
The NMI Query API supports filtering transactions by **merchant-defined fields** (`merchant_defined_field_1` … `merchant_defined_field_20`). `docs/nmi-api-mapping.md` already lists this as a planned addition — let's add it to `search_transactions`.

## Tasks
- [ ] Add an optional input to `search_transactions` for merchant-defined fields. Suggested shape: a record like `merchant_defined_fields: { "1": "value", "7": "value" }` mapped to `merchant_defined_field_#=value` (open to a simpl

[Read the thread](https://github.com/praveendias1180/easypaydirect-mcp/issues/3) · 2026-07-06 · open · 0 comments

## Most recent

### Surface Query API errors clearly (auth / invalid key / response codes)

## Summary
Improve how the server reports gateway errors. Today a bad/missing key or an error response surfaces as a generic message — let's parse the Query API's error signals and return **actionable** text.

## Background
`src/client.ts` already throws `NmiQueryError` and treats a non-XML body as an error (usually an auth failure). We can go further and map common failure modes + NMI response codes to clear messages.

## Tasks
- [ ] In `src/client.ts`, detect error responses and produce action

[Read the thread](https://github.com/praveendias1180/easypaydirect-mcp/issues/4) · 2026-07-06 · open · 0 comments

### Accept ISO-8601 / friendly dates in date filters (auto-convert to NMI format)

## Summary
Date filters currently require NMI's `YYYYMMDDhhmmss` format (e.g. `20260101000000`), which is awkward — especially for LLM callers. Let's also accept ISO-8601 (and plain `YYYY-MM-DD`) and convert automatically.

## Why
Models naturally produce ISO dates. Accepting them — while still accepting the raw NMI format — is a real usability win.

## Tasks
- [ ] Add a small helper `toNmiDate(input: string): string` (e.g. `src/dates.ts`) that:
  - passes through strings already in `YYYYMMDDhhm

[Read the thread](https://github.com/praveendias1180/easypaydirect-mcp/issues/2) · 2026-07-06 · open · 0 comments

### Add a unit-test suite with recorded Query API fixtures

## Summary
The project currently has **no tests**. A small unit-test suite gives contributors a safe way to verify changes — and it's a great first contribution.

## Why
`src/client.ts` parses the Query API's XML → JSON, and each tool maps inputs to Query API params. Both are easy to unit-test with a mocked `fetch` and recorded response fixtures — **no live gateway needed**.

## Tasks
- [ ] Add [Vitest](https://vitest.dev) as a dev dependency and a `"test"` script in `package.json`
- [ ] Add `te

[Read the thread](https://github.com/praveendias1180/easypaydirect-mcp/issues/1) · 2026-07-06 · open · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/praveendias1180/easypaydirect-mcp/issues).
