@ekoindia/eps-context-mcp 0.1.27 → 0.1.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -0
- package/data/eps.json +244 -3
- package/dist/index.js +30 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -51,6 +51,36 @@ claude mcp add eps --transport http https://mcp.eko.in/context/mcp
|
|
|
51
51
|
`GET https://mcp.eko.in/context/healthz` reports the bundle version it is serving.
|
|
52
52
|
Rate-limited per IP at the proxy.
|
|
53
53
|
|
|
54
|
+
### Non-MCP clients (REST + OpenAPI)
|
|
55
|
+
|
|
56
|
+
For tools that take plain HTTP actions instead of MCP — ChatGPT custom GPTs
|
|
57
|
+
(Actions), Gemini function calling, n8n, Zapier and the like — the same tools
|
|
58
|
+
are served as REST, described by a generated OpenAPI 3.1 document:
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
https://mcp.eko.in/context/openapi.json
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Every tool is `POST /context/tools/<name>` with its arguments as a JSON object
|
|
65
|
+
body (empty body = no arguments). It is not a second implementation: each
|
|
66
|
+
request drives the real MCP server in-process, so names, arguments and
|
|
67
|
+
validation match the MCP tools exactly, and a new tool appears here
|
|
68
|
+
automatically (only tools annotated `readOnlyHint: true` are published).
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
curl -s -X POST https://mcp.eko.in/context/tools/get_faqs \
|
|
72
|
+
-H 'content-type: application/json' -d '{"query":"billing","limit":3}'
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
- `200` → the tool's JSON result (non-JSON output such as `get_signing_snippet`
|
|
76
|
+
comes back as `{ "text": "…" }`).
|
|
77
|
+
- `400` → invalid arguments or a body that is not a JSON object; `404` →
|
|
78
|
+
unknown tool, or the slug/id/recipe looked up does not exist; `503` → bundle
|
|
79
|
+
not loaded yet. Errors are `{ "error": { "code", "message" } }`.
|
|
80
|
+
|
|
81
|
+
**ChatGPT custom GPT:** Configure → Actions → *Import from URL* →
|
|
82
|
+
`https://mcp.eko.in/context/openapi.json`, authentication *None*.
|
|
83
|
+
|
|
54
84
|
**stdio is still the better fit for CLI agents** (Claude Code, Cursor, Codex):
|
|
55
85
|
it starts instantly, works offline from the baked bundle, and costs no network
|
|
56
86
|
round trip per tool call.
|
|
@@ -71,6 +101,7 @@ clients can see this programmatically.
|
|
|
71
101
|
| `get_api` | `slug` | Full detail for one endpoint (params, response fields, errors, examples). |
|
|
72
102
|
| `get_topic` | `topic` (`auth` \| `errors` \| `pricing` \| `environments`) | One documentation topic. |
|
|
73
103
|
| `get_recipe` | `id` | One multi-step recipe (steps + branches). |
|
|
104
|
+
| `get_faqs` | `tag?`, `query?`, `limit?` | EPS FAQs (onboarding, auth, testing, integration, pricing, compliance, support). Filter by `tag`, rank by `query`. Answers are markdown with absolute links. |
|
|
74
105
|
| `get_signing_snippet` | `language` (`php` \| `java` \| `csharp` \| `javascript` \| `python` \| `go`) | Paste-ready **backend** code to compute the request `secret-key`. |
|
|
75
106
|
| `list_sdks` | — | The backend SDKs that wrap every endpoint: language, package, install command, minimum runtime, docs URL. Compact — no members or examples. |
|
|
76
107
|
| `get_sdk` | `language` (`javascript` \| `python` \| `php` \| `go` \| `java`; the guide slug such as `nodejs` also works) | One SDK in full: install + requirements, client config options with units, every public class/method/type, file-upload values, the error and timeout contract, and a worked `call()` example. |
|
package/data/eps.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"meta": {
|
|
3
3
|
"org": "ekoindia",
|
|
4
4
|
"apiVersion": "v3",
|
|
5
|
-
"bundleVersion": "
|
|
5
|
+
"bundleVersion": "01327e9c",
|
|
6
6
|
"environments": [
|
|
7
7
|
{
|
|
8
8
|
"id": "sandbox",
|
|
@@ -13774,10 +13774,10 @@
|
|
|
13774
13774
|
"name": "Vehicle & RC Verification",
|
|
13775
13775
|
"method": "POST",
|
|
13776
13776
|
"path": "/tools/kyc/vehicle-rc",
|
|
13777
|
-
"summary": "Verify a vehicle's registration certificate (RC) in real time — owner details, chassis/engine numbers, insurance validity, blacklist status, permits,
|
|
13777
|
+
"summary": "Verify a vehicle's registration certificate (RC) in real time — owner details, chassis/engine numbers, insurance validity, blacklist status, permits, and financier info via the VAHAN national database.",
|
|
13778
13778
|
"category": "verification",
|
|
13779
13779
|
"relevance": "M",
|
|
13780
|
-
"description": "Send a vehicle registration number and receive a comprehensive RC dataset in a single API call. The response covers ownership (name, father's name, address), registration details (authority, dates, expiry), insurance (company, policy number, validity), compliance (blacklist, challan, PUCC, emission norms), commercial-vehicle specifics (permit type/validity,
|
|
13780
|
+
"description": "Send a vehicle registration number and receive a comprehensive RC dataset in a single API call. The response covers ownership (name, father's name, address), registration details (authority, dates, expiry), insurance (company, policy number, validity), compliance (blacklist, challan, PUCC, emission norms), commercial-vehicle specifics (permit type/validity, national permit, tax status), and financier information. Pan-India coverage via the VAHAN database makes it suitable for driver onboarding, fleet monitoring, motor insurance underwriting, vehicle finance, and used-car platforms. Source (VAHAN) data typically reflects real-world changes within 15–30 days.",
|
|
13781
13781
|
"bestFor": "Mobility platforms, logistics companies, fleet operators, motor insurers, vehicle finance and lending platforms, used-car marketplaces.",
|
|
13782
13782
|
"docsUrl": "https://eps.eko.in/docs/vehicle-rc",
|
|
13783
13783
|
"headers": [
|
|
@@ -19397,5 +19397,246 @@
|
|
|
19397
19397
|
],
|
|
19398
19398
|
"example": "import in.eko.eps.EpsClient;\nimport java.util.Map;\n\nEpsClient client = EpsClient.builder()\n .developerKey(System.getenv(\"EPS_DEVELOPER_KEY\"))\n .accessKey(System.getenv(\"EPS_ACCESS_KEY\"))\n .initiatorId(\"9962981729\")\n .environment(\"sandbox\")\n .build();\n\nMap<String, Object> result = client.call(\"pan-lite\", Map.of(\n \"pan_number\", \"ABCDE1234F\",\n \"name\", \"Rajesh Kumar\",\n \"dob\", \"1994-08-29\"\n ));\nSystem.out.println(result);"
|
|
19399
19399
|
}
|
|
19400
|
+
],
|
|
19401
|
+
"faqs": [
|
|
19402
|
+
{
|
|
19403
|
+
"q": "How do I get started?",
|
|
19404
|
+
"a": "Four steps: **sign up** at the [developer console page](https://eps.eko.in/console), verify your identity with PAN and address details, load your wallet to test the APIs live, then integrate and go live. Sandbox credentials are issued immediately — you can call your first endpoint before any paperwork clears.",
|
|
19405
|
+
"tag": "getting-started",
|
|
19406
|
+
"links": [
|
|
19407
|
+
{
|
|
19408
|
+
"label": "Developer docs",
|
|
19409
|
+
"href": "https://eps.eko.in/docs"
|
|
19410
|
+
},
|
|
19411
|
+
{
|
|
19412
|
+
"label": "Sign up",
|
|
19413
|
+
"href": "https://eps.eko.in/console"
|
|
19414
|
+
}
|
|
19415
|
+
]
|
|
19416
|
+
},
|
|
19417
|
+
{
|
|
19418
|
+
"q": "What is EPS?",
|
|
19419
|
+
"a": "**EPS (Eko Platform Services)** is the technology arm of Eko — the developer tools, AI tooling and APIs that power modern fintech integration, from money transfer and AePS to identity verification.",
|
|
19420
|
+
"tag": "getting-started",
|
|
19421
|
+
"links": [
|
|
19422
|
+
{
|
|
19423
|
+
"label": "About Eko",
|
|
19424
|
+
"href": "https://eps.eko.in/about"
|
|
19425
|
+
}
|
|
19426
|
+
]
|
|
19427
|
+
},
|
|
19428
|
+
{
|
|
19429
|
+
"q": "What are the different ways to integrate with Eko EPS?",
|
|
19430
|
+
"a": "Three paths, pick whichever suits your stack:\n\n- Call the **REST APIs** directly.\n- Use our official **Node.js, Python, PHP, Go or Java SDKs** to skip request-signing boilerplate.\n- Let an **AI coding agent** build it via our [MCP server and agent skills](https://eps.eko.in/ai#install).\n\nFor multi-step flows (onboard a sender, *then* transfer) start from a [transaction-flow recipe](https://eps.eko.in/recipe) rather than wiring single endpoints together yourself.",
|
|
19431
|
+
"tag": "integration",
|
|
19432
|
+
"links": [
|
|
19433
|
+
{
|
|
19434
|
+
"label": "SDK guides",
|
|
19435
|
+
"href": "https://eps.eko.in/docs/sdk"
|
|
19436
|
+
},
|
|
19437
|
+
{
|
|
19438
|
+
"label": "Developer docs",
|
|
19439
|
+
"href": "https://eps.eko.in/docs"
|
|
19440
|
+
},
|
|
19441
|
+
{
|
|
19442
|
+
"label": "Integrate with AI",
|
|
19443
|
+
"href": "https://eps.eko.in/ai"
|
|
19444
|
+
}
|
|
19445
|
+
]
|
|
19446
|
+
},
|
|
19447
|
+
{
|
|
19448
|
+
"q": "How does API authentication work?",
|
|
19449
|
+
"a": "Each request carries your static `developer_key` header plus a per-request `secret-key` header — an **HMAC-SHA256** signature of the current timestamp, keyed by your access key. The access key itself is **never sent over the wire**. You receive UAT keys on signup and production keys after KYC.\n\nThe [How Authentication Works](https://eps.eko.in/docs/how-auth-works) guide has the full signing recipe in five languages plus an **in-browser playground** that generates and verifies a real `secret-key` against your own access key.",
|
|
19450
|
+
"tag": "auth",
|
|
19451
|
+
"links": [
|
|
19452
|
+
{
|
|
19453
|
+
"label": "How auth works",
|
|
19454
|
+
"href": "https://eps.eko.in/docs/how-auth-works"
|
|
19455
|
+
},
|
|
19456
|
+
{
|
|
19457
|
+
"label": "Set up auth with AI",
|
|
19458
|
+
"href": "https://eps.eko.in/ai#install"
|
|
19459
|
+
}
|
|
19460
|
+
]
|
|
19461
|
+
},
|
|
19462
|
+
{
|
|
19463
|
+
"q": "Is there a sandbox environment for testing?",
|
|
19464
|
+
"a": "Yes. A full **sandbox** is available immediately on signup — test your integration end-to-end before going live, no commitment required. For offline work you can also run our [mock server](https://eps.eko.in/ai#artifacts) (`npx -y @ekoindia/eps-mock-server`) and get canned responses with no network calls at all.",
|
|
19465
|
+
"tag": "testing",
|
|
19466
|
+
"links": [
|
|
19467
|
+
{
|
|
19468
|
+
"label": "Get started",
|
|
19469
|
+
"href": "https://eps.eko.in/docs"
|
|
19470
|
+
}
|
|
19471
|
+
]
|
|
19472
|
+
},
|
|
19473
|
+
{
|
|
19474
|
+
"q": "What are the sandbox and production base URLs?",
|
|
19475
|
+
"a": "Sandbox and production share the same paths and differ **only** by base URL:\n\n- UAT / Sandbox — `https://staging.eko.in/ekoapi/v3`\n- Production — `https://api.eko.in/ekoicici/v3`\n\nA common cause of failures is calling the sandbox URL with live credentials, or vice-versa — **make sure the base URL matches the keys you are using**.",
|
|
19476
|
+
"tag": "testing",
|
|
19477
|
+
"links": [
|
|
19478
|
+
{
|
|
19479
|
+
"label": "Get started",
|
|
19480
|
+
"href": "https://eps.eko.in/docs"
|
|
19481
|
+
},
|
|
19482
|
+
{
|
|
19483
|
+
"label": "How auth works",
|
|
19484
|
+
"href": "https://eps.eko.in/docs/how-auth-works"
|
|
19485
|
+
}
|
|
19486
|
+
]
|
|
19487
|
+
},
|
|
19488
|
+
{
|
|
19489
|
+
"q": "Do I need to whitelist my server IP?",
|
|
19490
|
+
"a": "Production API access may require your **static public (server) IP** to be whitelisted. If your calls work from Postman but fail or time out from your own server, that is almost always the cause — share your static public IP with us so we can whitelist it.",
|
|
19491
|
+
"tag": "integration",
|
|
19492
|
+
"links": [
|
|
19493
|
+
{
|
|
19494
|
+
"label": "Developer docs",
|
|
19495
|
+
"href": "https://eps.eko.in/docs"
|
|
19496
|
+
}
|
|
19497
|
+
]
|
|
19498
|
+
},
|
|
19499
|
+
{
|
|
19500
|
+
"q": "Can an AI coding agent build the integration for me?",
|
|
19501
|
+
"a": "Yes — that is the fastest path. Point your agent (Claude Code, Codex, Cursor, Copilot, …) at our **MCP server** and it can look up any endpoint, generate correctly-signed requests, and scaffold the integration in your own stack. Install it in [one step from the AI hub](https://eps.eko.in/ai#install), or start from a [ready-made prompt](https://eps.eko.in/ai#quick-start).\n\nWe also publish an **OpenAPI 3.1 spec**, a **Postman collection** and per-agent **context packs** (`AGENTS.md`, `CLAUDE.md`, `.cursorrules`) so an agent has the ground truth instead of guessing.",
|
|
19502
|
+
"tag": "ai",
|
|
19503
|
+
"links": [
|
|
19504
|
+
{
|
|
19505
|
+
"label": "AI tools & MCP server",
|
|
19506
|
+
"href": "https://eps.eko.in/ai"
|
|
19507
|
+
},
|
|
19508
|
+
{
|
|
19509
|
+
"label": "Quick start prompt",
|
|
19510
|
+
"href": "https://eps.eko.in/ai#quick-start"
|
|
19511
|
+
}
|
|
19512
|
+
]
|
|
19513
|
+
},
|
|
19514
|
+
{
|
|
19515
|
+
"q": "What response times can I expect?",
|
|
19516
|
+
"a": "Most verification APIs return in **real time with sub-second responses**, and 99th-percentile latency stays under two seconds across verification endpoints. Transaction APIs (DMT, AePS, BBPS) respond within seconds.",
|
|
19517
|
+
"tag": "integration"
|
|
19518
|
+
},
|
|
19519
|
+
{
|
|
19520
|
+
"q": "Can the API handle high volumes?",
|
|
19521
|
+
"a": "Yes. The API is designed to handle **large-scale volumes** reliably without performance degradation.",
|
|
19522
|
+
"tag": "integration"
|
|
19523
|
+
},
|
|
19524
|
+
{
|
|
19525
|
+
"q": "How is API usage billed?",
|
|
19526
|
+
"a": "Usage is billed **per successful API call** with no minimum commitment. Volume-based pricing tiers are available — see the [pricing calculator](https://eps.eko.in/pricing) for indicative rates, or contact our team for a custom quote.",
|
|
19527
|
+
"tag": "pricing",
|
|
19528
|
+
"links": [
|
|
19529
|
+
{
|
|
19530
|
+
"label": "Pricing & calculator",
|
|
19531
|
+
"href": "https://eps.eko.in/pricing"
|
|
19532
|
+
}
|
|
19533
|
+
]
|
|
19534
|
+
},
|
|
19535
|
+
{
|
|
19536
|
+
"q": "How are errors and failures reported?",
|
|
19537
|
+
"a": "Every response carries a `status` code (`0` = success), a `response_status_id` and a human-readable `message`. **A `200 OK` with a non-zero `response_status_id` is a business failure, not a transport success** — always check both before treating a call as done. The [Status & Error Codes](https://eps.eko.in/docs/error-codes) reference lists every code and what to do about it.",
|
|
19538
|
+
"tag": "integration",
|
|
19539
|
+
"links": [
|
|
19540
|
+
{
|
|
19541
|
+
"label": "Error codes reference",
|
|
19542
|
+
"href": "https://eps.eko.in/docs/error-codes"
|
|
19543
|
+
}
|
|
19544
|
+
]
|
|
19545
|
+
},
|
|
19546
|
+
{
|
|
19547
|
+
"q": "How does API versioning work?",
|
|
19548
|
+
"a": "Eko APIs are versioned **in the base path** (currently `v3`). Sandbox and production share the same paths and differ only by base URL, so promoting an integration from UAT to live is a base-URL and credentials change — not a code change.",
|
|
19549
|
+
"tag": "integration",
|
|
19550
|
+
"links": [
|
|
19551
|
+
{
|
|
19552
|
+
"label": "Developer docs",
|
|
19553
|
+
"href": "https://eps.eko.in/docs"
|
|
19554
|
+
}
|
|
19555
|
+
]
|
|
19556
|
+
},
|
|
19557
|
+
{
|
|
19558
|
+
"q": "How do I capture an Aadhaar fingerprint or biometric?",
|
|
19559
|
+
"a": "Through a **UIDAI registered device (RDService)** — the scanner returns a signed, encrypted PID block that you pass straight through to the API. Never capture or store raw biometrics yourself.\n\nThe [Aadhaar Biometric Auth (RDService)](https://eps.eko.in/docs/aadhaar-biometric-rdservice) guide covers both the Windows/Web and Android capture paths, and includes an **in-browser device tester** — plug in your scanner and confirm it works before writing any code.",
|
|
19560
|
+
"tag": "integration",
|
|
19561
|
+
"links": [
|
|
19562
|
+
{
|
|
19563
|
+
"label": "RDService guide & device tester",
|
|
19564
|
+
"href": "https://eps.eko.in/docs/aadhaar-biometric-rdservice"
|
|
19565
|
+
}
|
|
19566
|
+
]
|
|
19567
|
+
},
|
|
19568
|
+
{
|
|
19569
|
+
"q": "How do I chain multiple API calls into one flow?",
|
|
19570
|
+
"a": "Most real use cases are multi-step — onboard a customer, verify them, *then* transact. Rather than stitching endpoints together from the reference, start from a [**transaction flow recipe**](https://eps.eko.in/recipe): each one is an ordered runbook showing which endpoint to call at each step and how to branch on `response_status_id`.\n\nThe same recipes are available to AI agents through our [MCP server](https://eps.eko.in/ai#install), so an agent can execute a whole flow end to end.",
|
|
19571
|
+
"tag": "integration",
|
|
19572
|
+
"links": [
|
|
19573
|
+
{
|
|
19574
|
+
"label": "Transaction flows (recipes)",
|
|
19575
|
+
"href": "https://eps.eko.in/recipe"
|
|
19576
|
+
}
|
|
19577
|
+
]
|
|
19578
|
+
},
|
|
19579
|
+
{
|
|
19580
|
+
"q": "What data privacy and compliance standards does Eko follow?",
|
|
19581
|
+
"a": "Eko follows applicable **RBI** and data-protection guidelines for its regulated banking and KYC services. Aadhaar-based KYC is performed **only with explicit customer consent**.",
|
|
19582
|
+
"tag": "compliance"
|
|
19583
|
+
},
|
|
19584
|
+
{
|
|
19585
|
+
"q": "How do I report an integration issue?",
|
|
19586
|
+
"a": "Share the complete request and response so we can debug in one round trip:\n\n- The full `curl` (including headers)\n- The response body, verbatim\n- The timestamp of the call\n- Your `initiator_id`, `user_code` and `client_ref_id`\n\nIssues raised with these details are resolved **much** faster than \"the API is failing\".",
|
|
19587
|
+
"tag": "support"
|
|
19588
|
+
},
|
|
19589
|
+
{
|
|
19590
|
+
"q": "Are there any common integration gotchas to know?",
|
|
19591
|
+
"a": "Three frequent ones:\n\n- `client_ref_id` must be **at most 20 characters** and unique per request.\n- Calling the sandbox base URL with live credentials (or vice-versa) fails auth — see [How Authentication Works](https://eps.eko.in/docs/how-auth-works).\n- The `JSESSIONID` cookie Postman adds automatically is **harmless** — it has no effect on the API and can be ignored.",
|
|
19592
|
+
"tag": "integration",
|
|
19593
|
+
"links": [
|
|
19594
|
+
{
|
|
19595
|
+
"label": "Error codes reference",
|
|
19596
|
+
"href": "https://eps.eko.in/docs/error-codes"
|
|
19597
|
+
}
|
|
19598
|
+
]
|
|
19599
|
+
},
|
|
19600
|
+
{
|
|
19601
|
+
"q": "Where can I find the developer integration FAQ?",
|
|
19602
|
+
"a": "Inside the API docs: [**Integration FAQs**](https://eps.eko.in/docs/faqs) collects the credential, signing, environment, error-handling and support questions in one place, right next to the endpoint reference and guides.",
|
|
19603
|
+
"tag": "support",
|
|
19604
|
+
"links": [
|
|
19605
|
+
{
|
|
19606
|
+
"label": "Integration FAQs",
|
|
19607
|
+
"href": "https://eps.eko.in/docs/faqs"
|
|
19608
|
+
}
|
|
19609
|
+
]
|
|
19610
|
+
},
|
|
19611
|
+
{
|
|
19612
|
+
"q": "How does billing work?",
|
|
19613
|
+
"a": "Usage is billed **per successful API call** — you pay only for verifications that return a result. There is **no monthly minimum and no lock-in**. Monthly invoices are available in the [console section](https://eps.eko.in/console) (Login to console > Manage My Account > E-Invoice / GST).",
|
|
19614
|
+
"tag": "pricing"
|
|
19615
|
+
},
|
|
19616
|
+
{
|
|
19617
|
+
"q": "Is there a setup fee?",
|
|
19618
|
+
"a": "A one-time setup fee of **₹6,000 per verification API** (excl. GST) applies, plus ₹20,000 per BC/Payments API family for DMT, AePS and BBPS. It is currently **25% off** as a limited-time offer. A full waiver is also available against a higher monthly volume commitment. The [calculator](https://eps.eko.in/pricing) shows the exact one-time fee for your selection.",
|
|
19619
|
+
"tag": "pricing"
|
|
19620
|
+
},
|
|
19621
|
+
{
|
|
19622
|
+
"q": "Are the listed prices inclusive of GST?",
|
|
19623
|
+
"a": "No. All listed rates are **exclusive of GST**, which is charged at 18%. The [calculator](https://eps.eko.in/pricing) lets you toggle the total between GST-inclusive and GST-exclusive views. Add your GST number in the [console section](https://eps.eko.in/console) for GST-compliant invoices (Login to console > Manage My Account > E-Invoice / GST).",
|
|
19624
|
+
"tag": "pricing"
|
|
19625
|
+
},
|
|
19626
|
+
{
|
|
19627
|
+
"q": "Am I charged for failed verifications?",
|
|
19628
|
+
"a": "No. You are only billed for **successful** API responses. Failed or errored calls are not counted toward your usage — see [Status & Error Codes](https://eps.eko.in/docs/error-codes) for how success is determined.",
|
|
19629
|
+
"tag": "pricing"
|
|
19630
|
+
},
|
|
19631
|
+
{
|
|
19632
|
+
"q": "Is there a free sandbox to test the APIs?",
|
|
19633
|
+
"a": "Yes. **Sandbox access is free** — sign up, test every API end-to-end with sample data, and move to production whenever you're ready. You can also run our [offline mock server](https://eps.eko.in/ai#artifacts) (`npx -y @ekoindia/eps-mock-server`) with no signup at all.",
|
|
19634
|
+
"tag": "pricing"
|
|
19635
|
+
},
|
|
19636
|
+
{
|
|
19637
|
+
"q": "Can prices change?",
|
|
19638
|
+
"a": "Commercials are subject to change based on service-provider terms. Any revision is communicated in advance, and your dashboard always reflects the rates applicable to your account.",
|
|
19639
|
+
"tag": "pricing"
|
|
19640
|
+
}
|
|
19400
19641
|
]
|
|
19401
19642
|
}
|
package/dist/index.js
CHANGED
|
@@ -79,6 +79,18 @@ var listSdks = (bundle) => (bundle.sdks ?? []).map((s) => ({
|
|
|
79
79
|
var listSdkLanguages = (bundle) => (bundle.sdks ?? []).map((s) => s.lang);
|
|
80
80
|
var listSdkSlugs = (bundle) => (bundle.sdks ?? []).map((s) => s.slug);
|
|
81
81
|
var getSdk = (bundle, language) => (bundle.sdks ?? []).find((s) => s.lang === language || s.slug === language);
|
|
82
|
+
var listFaqTags = (bundle) => [
|
|
83
|
+
...new Set((bundle.faqs ?? []).flatMap((f) => f.tag ? [f.tag] : []))
|
|
84
|
+
];
|
|
85
|
+
var getFaqs = (bundle, { tag, query, limit } = {}) => {
|
|
86
|
+
const pool = (bundle.faqs ?? []).filter((f) => !tag || f.tag === tag);
|
|
87
|
+
const terms = (query ?? "").toLowerCase().split(/\s+/).filter(Boolean);
|
|
88
|
+
const ranked = terms.length ? pool.map((f) => {
|
|
89
|
+
const hay = `${f.q} ${f.a}`.toLowerCase();
|
|
90
|
+
return { f, score: terms.filter((t) => hay.includes(t)).length };
|
|
91
|
+
}).filter((s) => s.score > 0).sort((x, y) => y.score - x.score).map((s) => s.f) : pool;
|
|
92
|
+
return limit !== void 0 ? ranked.slice(0, limit) : ranked;
|
|
93
|
+
};
|
|
82
94
|
|
|
83
95
|
// src/auth-debug.ts
|
|
84
96
|
var MS_DIGITS = 13;
|
|
@@ -319,7 +331,8 @@ var json = (value) => ({
|
|
|
319
331
|
});
|
|
320
332
|
var notFound = (message) => ({
|
|
321
333
|
isError: true,
|
|
322
|
-
content: [{ type: "text", text: message }]
|
|
334
|
+
content: [{ type: "text", text: message }],
|
|
335
|
+
_meta: { httpStatus: 404 }
|
|
323
336
|
});
|
|
324
337
|
var READ_ONLY = {
|
|
325
338
|
readOnlyHint: true,
|
|
@@ -440,6 +453,22 @@ var createEpsServer = (bundle, source, versionState) => {
|
|
|
440
453
|
);
|
|
441
454
|
}
|
|
442
455
|
);
|
|
456
|
+
const faqTags = listFaqTags(bundle);
|
|
457
|
+
const faqTagSchema = faqTags.length ? z.enum(faqTags) : z.string();
|
|
458
|
+
server.registerTool(
|
|
459
|
+
"get_faqs",
|
|
460
|
+
{
|
|
461
|
+
title: "Get FAQs",
|
|
462
|
+
description: "EPS FAQs (onboarding, auth, testing, integration, pricing, compliance, support). Answers are markdown with absolute links. Filter by tag and/or rank by query; with neither, all FAQs are returned.",
|
|
463
|
+
inputSchema: {
|
|
464
|
+
tag: faqTagSchema.optional().describe(`One of: ${faqTags.join(", ")}`),
|
|
465
|
+
query: z.string().optional().describe("Free-text question to rank by"),
|
|
466
|
+
limit: limitSchema.describe("Max FAQs to return (default: all)")
|
|
467
|
+
},
|
|
468
|
+
annotations: READ_ONLY
|
|
469
|
+
},
|
|
470
|
+
async ({ tag, query, limit }) => json(getFaqs(bundle, { tag, query, limit }))
|
|
471
|
+
);
|
|
443
472
|
server.registerTool(
|
|
444
473
|
"get_signing_snippet",
|
|
445
474
|
{
|