@ekoindia/eps-context-mcp 0.1.12 → 0.1.13

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.
Files changed (3) hide show
  1. package/README.md +1 -1
  2. package/data/eps.json +55 -397
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -39,7 +39,7 @@ clients can see this programmatically.
39
39
  | --------------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
40
40
  | `list_apis` | `category?`, `limit?` | Compact index of EPS endpoints (no request/response bodies). `category` is validated against the bundle's categories; all entries by default. |
41
41
  | `list_topics` | — | Documentation topic ids: `auth`, `errors`, `pricing`, `environments`. |
42
- | `list_recipes` | — | Multi-step recipe ids + names (e.g. `dmt-fino-send-money`, `aeps-cash-withdrawal`). |
42
+ | `list_recipes` | — | Multi-step recipe ids + names (e.g. `dmt-fino-send-money`, `aeps-fingpay-cash-withdrawal`). |
43
43
  | `search` | `query`, `limit?` | Ranked endpoint matches for a query (ids only, no bodies). Top 10 by default; raise `limit` for more. |
44
44
  | `get_api` | `slug` | Full detail for one endpoint (params, response fields, errors, examples). |
45
45
  | `get_topic` | `topic` (`auth` \| `errors` \| `pricing` \| `environments`) | One documentation topic. |
package/data/eps.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "meta": {
3
3
  "org": "ekoindia",
4
4
  "apiVersion": "v3",
5
- "bundleVersion": "720a494b",
5
+ "bundleVersion": "c9e5f932",
6
6
  "environments": [
7
7
  {
8
8
  "id": "sandbox",
@@ -8050,394 +8050,6 @@
8050
8050
  ],
8051
8051
  "responseTypes": []
8052
8052
  },
8053
- {
8054
- "slug": "aadhaar-dmt-levin-validate",
8055
- "productId": "dmt",
8056
- "productName": "Domestic Money Transfer (DMT)",
8057
- "name": "Validate Aadhaar & Generate OTP",
8058
- "method": "POST",
8059
- "path": "/customer/payment/dmt-levin/sender/{customer_id}/aadhaar/otp",
8060
- "summary": "Validate a sender's Aadhaar number and trigger an OTP to the linked mobile for DMT Levin onboarding.",
8061
- "category": "bc",
8062
- "relevance": "M",
8063
- "description": "Submits the sender's Aadhaar number via the DMT Levin channel to initiate OTP-based Aadhaar validation. The `otp_ref_id` from the sender's existing profile plus the Aadhaar number are required. Returns a new `otp_ref_id` for the validation session. Part of the Levin DMT sender onboarding flow.",
8064
- "bestFor": "DMT Levin sender onboarding flows that require Aadhaar number validation as a step before completing identity verification.",
8065
- "docsUrl": "https://eps.eko.in/docs/aadhaar-dmt-levin-validate",
8066
- "headers": [
8067
- {
8068
- "name": "developer_key",
8069
- "in": "header",
8070
- "type": "string",
8071
- "required": true,
8072
- "description": "Static API key issued to your account after KYC."
8073
- },
8074
- {
8075
- "name": "secret-key",
8076
- "in": "header",
8077
- "type": "string",
8078
- "required": true,
8079
- "description": "Dynamic per-request signature: base64(HMAC-SHA256(timestamp, base64(access_key)))."
8080
- },
8081
- {
8082
- "name": "secret-key-timestamp",
8083
- "in": "header",
8084
- "type": "string",
8085
- "required": true,
8086
- "description": "Current time in milliseconds since UNIX epoch, used to compute secret-key. Must match server time."
8087
- },
8088
- {
8089
- "name": "content-type",
8090
- "in": "header",
8091
- "type": "string",
8092
- "required": true,
8093
- "description": "application/json",
8094
- "example": "application/json"
8095
- }
8096
- ],
8097
- "requestParams": [
8098
- {
8099
- "name": "initiator_id",
8100
- "type": "string",
8101
- "required": true,
8102
- "description": "Registered mobile number of the API user (see Platform Credentials).",
8103
- "example": "9962981729",
8104
- "in": "body"
8105
- },
8106
- {
8107
- "name": "client_ref_id",
8108
- "type": "string",
8109
- "required": false,
8110
- "description": "Unique reference ID per API call, generated by your system (max 20 characters).",
8111
- "example": "2026010100123456789",
8112
- "in": "body"
8113
- },
8114
- {
8115
- "name": "customer_id",
8116
- "type": "integer",
8117
- "required": true,
8118
- "description": "Sender's mobile number.",
8119
- "example": 9876543210,
8120
- "in": "path"
8121
- },
8122
- {
8123
- "name": "aadhar",
8124
- "type": "string",
8125
- "required": true,
8126
- "description": "12-digit Aadhaar number of the sender.",
8127
- "example": "123456789012",
8128
- "in": "body"
8129
- },
8130
- {
8131
- "name": "otp_ref_id",
8132
- "type": "string",
8133
- "required": true,
8134
- "description": "Reference ID returned from the Get Sender Info (or Create Sender) API for this customer.",
8135
- "example": "73849201",
8136
- "in": "body"
8137
- },
8138
- {
8139
- "name": "additional_info",
8140
- "type": "string",
8141
- "required": true,
8142
- "description": "Additional info flag. Defaults to 1.",
8143
- "example": "1",
8144
- "in": "body"
8145
- }
8146
- ],
8147
- "sampleRequest": {
8148
- "initiator_id": "9962981729",
8149
- "client_ref_id": "2026010100123456789",
8150
- "aadhar": "123456789012",
8151
- "otp_ref_id": "73849201",
8152
- "additional_info": "1"
8153
- },
8154
- "responseFields": [
8155
- {
8156
- "name": "status",
8157
- "type": "number",
8158
- "description": "Primary success indicator (0 = success).",
8159
- "example": 0
8160
- },
8161
- {
8162
- "name": "message",
8163
- "type": "string",
8164
- "description": "Human-readable response / error message.",
8165
- "example": "Verification successful"
8166
- },
8167
- {
8168
- "name": "response_status_id",
8169
- "type": "number",
8170
- "description": "Granular status id; see the shared error-codes table.",
8171
- "example": 0
8172
- },
8173
- {
8174
- "name": "response_type_id",
8175
- "type": "number",
8176
- "description": "A unique id for every possible response shape (success or error) — useful for client logic branching and analytics.",
8177
- "example": 1388
8178
- },
8179
- {
8180
- "name": "data",
8181
- "type": "object",
8182
- "description": "API-specific response payload.",
8183
- "children": [
8184
- {
8185
- "name": "otp_ref_id",
8186
- "type": "string",
8187
- "description": "New OTP reference ID for the Aadhaar validation session. Pass to Validate Sender Aadhaar OTP.",
8188
- "example": "93847201"
8189
- },
8190
- {
8191
- "name": "mobile_hint",
8192
- "type": "string",
8193
- "description": "Masked mobile number to which the OTP was dispatched.",
8194
- "example": "******3210"
8195
- }
8196
- ]
8197
- }
8198
- ],
8199
- "sampleSuccessResponse": {
8200
- "status": 0,
8201
- "response_status_id": 0,
8202
- "message": "Aadhaar OTP dispatched successfully",
8203
- "response_type_id": 1388,
8204
- "data": {
8205
- "otp_ref_id": "93847201",
8206
- "mobile_hint": "******3210"
8207
- }
8208
- },
8209
- "errorScenarios": [
8210
- {
8211
- "scenario": "Invalid Aadhaar number",
8212
- "statusCode": 200,
8213
- "example": {
8214
- "status": 1,
8215
- "response_status_id": 301,
8216
- "message": "Invalid Aadhaar number provided.",
8217
- "response_type_id": 1388,
8218
- "data": {}
8219
- }
8220
- }
8221
- ],
8222
- "responseTypes": []
8223
- },
8224
- {
8225
- "slug": "aadhaar-dmt-levin-verify-otp",
8226
- "productId": "dmt",
8227
- "productName": "Domestic Money Transfer (DMT)",
8228
- "name": "Validate Sender Aadhaar OTP",
8229
- "method": "POST",
8230
- "path": "/customer/payment/dmt-levin/sender/{customer_id}/aadhaar/otp/verify",
8231
- "summary": "Verify the Aadhaar OTP for a DMT Levin sender to complete identity validation.",
8232
- "category": "bc",
8233
- "relevance": "M",
8234
- "description": "Validates the OTP received on the sender's Aadhaar-linked mobile number in the DMT Levin flow. Use `intent_id: 20` for Aadhaar validation (as opposed to `intent_id: 19` for sender onboarding). On success, the sender's identity is confirmed and their DMT Levin wallet profile is updated.",
8235
- "bestFor": "Completing OTP-based Aadhaar validation in the DMT Levin sender onboarding flow.",
8236
- "docsUrl": "https://eps.eko.in/docs/aadhaar-dmt-levin-verify-otp",
8237
- "headers": [
8238
- {
8239
- "name": "developer_key",
8240
- "in": "header",
8241
- "type": "string",
8242
- "required": true,
8243
- "description": "Static API key issued to your account after KYC."
8244
- },
8245
- {
8246
- "name": "secret-key",
8247
- "in": "header",
8248
- "type": "string",
8249
- "required": true,
8250
- "description": "Dynamic per-request signature: base64(HMAC-SHA256(timestamp, base64(access_key)))."
8251
- },
8252
- {
8253
- "name": "secret-key-timestamp",
8254
- "in": "header",
8255
- "type": "string",
8256
- "required": true,
8257
- "description": "Current time in milliseconds since UNIX epoch, used to compute secret-key. Must match server time."
8258
- },
8259
- {
8260
- "name": "content-type",
8261
- "in": "header",
8262
- "type": "string",
8263
- "required": true,
8264
- "description": "application/json",
8265
- "example": "application/json"
8266
- }
8267
- ],
8268
- "requestParams": [
8269
- {
8270
- "name": "initiator_id",
8271
- "type": "string",
8272
- "required": true,
8273
- "description": "Registered mobile number of the API user (see Platform Credentials).",
8274
- "example": "9962981729",
8275
- "in": "body"
8276
- },
8277
- {
8278
- "name": "client_ref_id",
8279
- "type": "string",
8280
- "required": false,
8281
- "description": "Unique reference ID per API call, generated by your system (max 20 characters).",
8282
- "example": "2026010100123456789",
8283
- "in": "body"
8284
- },
8285
- {
8286
- "name": "customer_id",
8287
- "type": "string",
8288
- "required": true,
8289
- "description": "Sender's mobile number.",
8290
- "example": "9876543210",
8291
- "in": "path"
8292
- },
8293
- {
8294
- "name": "otp",
8295
- "type": "integer",
8296
- "required": false,
8297
- "description": "OTP received on the Aadhaar-linked mobile number.",
8298
- "example": 123456,
8299
- "in": "body"
8300
- },
8301
- {
8302
- "name": "otp_ref_id",
8303
- "type": "integer",
8304
- "required": true,
8305
- "description": "Reference ID from the Validate Aadhaar (DMT Levin) response.",
8306
- "example": 93847201,
8307
- "in": "body"
8308
- },
8309
- {
8310
- "name": "intent_id",
8311
- "type": "string",
8312
- "required": false,
8313
- "description": "Set to \"19\" for sender onboarding or \"20\" for Aadhaar validation.",
8314
- "example": "20",
8315
- "in": "body"
8316
- },
8317
- {
8318
- "name": "additional_info",
8319
- "type": "string",
8320
- "required": false,
8321
- "description": "Additional info flag. Defaults to 1.",
8322
- "example": "1",
8323
- "in": "body"
8324
- }
8325
- ],
8326
- "sampleRequest": {
8327
- "initiator_id": "9962981729",
8328
- "client_ref_id": "2026010100123456789",
8329
- "otp": 123456,
8330
- "otp_ref_id": 93847201,
8331
- "intent_id": "20",
8332
- "additional_info": "1"
8333
- },
8334
- "responseFields": [
8335
- {
8336
- "name": "status",
8337
- "type": "number",
8338
- "description": "Primary success indicator (0 = success).",
8339
- "example": 0
8340
- },
8341
- {
8342
- "name": "message",
8343
- "type": "string",
8344
- "description": "Human-readable response / error message.",
8345
- "example": "Verification successful"
8346
- },
8347
- {
8348
- "name": "response_status_id",
8349
- "type": "number",
8350
- "description": "Granular status id; see the shared error-codes table.",
8351
- "example": 0
8352
- },
8353
- {
8354
- "name": "response_type_id",
8355
- "type": "number",
8356
- "description": "A unique id for every possible response shape (success or error) — useful for client logic branching and analytics.",
8357
- "example": 1388
8358
- },
8359
- {
8360
- "name": "data",
8361
- "type": "object",
8362
- "description": "API-specific response payload.",
8363
- "children": [
8364
- {
8365
- "name": "verified",
8366
- "type": "boolean",
8367
- "description": "True if Aadhaar OTP validation was successful.",
8368
- "imp": true,
8369
- "example": true
8370
- },
8371
- {
8372
- "name": "name",
8373
- "type": "string",
8374
- "description": "Verified sender name from Aadhaar.",
8375
- "imp": true,
8376
- "example": "Arjun Mehta"
8377
- },
8378
- {
8379
- "name": "gender",
8380
- "type": "string",
8381
- "description": "Gender from Aadhaar record.",
8382
- "imp": true,
8383
- "example": "M"
8384
- },
8385
- {
8386
- "name": "dob",
8387
- "type": "string",
8388
- "description": "Date of birth from Aadhaar.",
8389
- "imp": true,
8390
- "example": "10-01-1988"
8391
- },
8392
- {
8393
- "name": "masked_aadhaar",
8394
- "type": "string",
8395
- "description": "Aadhaar number with first 8 digits masked.",
8396
- "imp": true,
8397
- "example": "XXXX-XXXX-3456"
8398
- }
8399
- ]
8400
- }
8401
- ],
8402
- "sampleSuccessResponse": {
8403
- "status": 0,
8404
- "response_status_id": 0,
8405
- "message": "Aadhaar OTP verified successfully",
8406
- "response_type_id": 1388,
8407
- "data": {
8408
- "verified": true,
8409
- "name": "Arjun Mehta",
8410
- "gender": "M",
8411
- "dob": "10-01-1988",
8412
- "masked_aadhaar": "XXXX-XXXX-3456"
8413
- }
8414
- },
8415
- "errorScenarios": [
8416
- {
8417
- "scenario": "Wrong OTP",
8418
- "statusCode": 200,
8419
- "example": {
8420
- "status": 1,
8421
- "response_status_id": 302,
8422
- "message": "Wrong OTP. Please check and retry.",
8423
- "response_type_id": 1388,
8424
- "data": {}
8425
- }
8426
- },
8427
- {
8428
- "scenario": "OTP expired",
8429
- "statusCode": 200,
8430
- "example": {
8431
- "status": 1,
8432
- "response_status_id": 303,
8433
- "message": "OTP expired. Please regenerate.",
8434
- "response_type_id": 1388,
8435
- "data": {}
8436
- }
8437
- }
8438
- ],
8439
- "responseTypes": []
8440
- },
8441
8053
  {
8442
8054
  "slug": "aadhaar-ppi-levin-validate",
8443
8055
  "productId": "ppi",
@@ -23050,38 +22662,84 @@
23050
22662
  "id": "dmt-fino-send-money",
23051
22663
  "slug": "dmt-fino-send-money",
23052
22664
  "name": "DMT (Fino) — Send Money",
23053
- "summary": "Full Fino DMT money-transfer flow: look up the sender, onboard them if new, add the recipient, then send an OTP-verified transfer.",
22665
+ "summary": "Full Fino DMT money-transfer flow: look up the sender, onboard and biometric-eKYC them if new, pick or add the recipient, then send an OTP-verified transfer.",
23054
22666
  "productId": "dmt",
23055
22667
  "steps": [
23056
22668
  {
23057
22669
  "specSlug": "dmt-get-sender",
23058
- "purpose": "Check whether the customer is already a registered DMT sender.",
22670
+ "purpose": "Check whether the customer is already a registered DMT sender, and which stage of onboarding they are at. The `response_type_id` decides where the flow enters.",
23059
22671
  "branches": [
23060
22672
  {
23061
22673
  "onResponseTypeId": 308,
23062
22674
  "goto": "dmt-onboard-sender",
23063
22675
  "note": "Sender not found — onboard them before continuing."
22676
+ },
22677
+ {
22678
+ "onResponseTypeId": 2134,
22679
+ "goto": "dmt-fino-sender-ekyc",
22680
+ "note": "Sender found but biometric eKYC is pending — capture their fingerprint."
22681
+ },
22682
+ {
22683
+ "onResponseTypeId": 2129,
22684
+ "goto": "dmt-fino-validate-ekyc-otp",
22685
+ "note": "Sender found mid-eKYC — only the OTP validation is left."
22686
+ },
22687
+ {
22688
+ "onResponseTypeId": 309,
22689
+ "goto": "dmt-get-recipients",
22690
+ "note": "Sender found and KYC complete — skip onboarding and go straight to recipients."
23064
22691
  }
23065
22692
  ]
23066
22693
  },
23067
22694
  {
23068
22695
  "specSlug": "dmt-onboard-sender",
23069
- "purpose": "Register a new sender when Get Sender API returns `response_type_id=308`."
22696
+ "purpose": "Register a new sender with name, date of birth and residence address. This opens the sender on Eko but leaves KYC pending on Fino (`response_type_id=2134`) — they cannot transact yet.",
22697
+ "branches": [
22698
+ {
22699
+ "onResponseTypeId": 309,
22700
+ "goto": "dmt-get-recipients",
22701
+ "note": "Already onboarded on Fino externally, KYC complete — no eKYC needed."
22702
+ }
22703
+ ]
22704
+ },
22705
+ {
22706
+ "specSlug": "dmt-fino-sender-ekyc",
22707
+ "purpose": "Biometric Aadhaar eKYC — one-time per sender. Capture the PID block from an RD-service fingerprint scanner and submit it with the sender's Aadhaar number; the response returns the `kyc_request_id` and `otp_ref_id` the next step needs. Completing eKYC raises the sender's monthly limit from ₹5,000 to ₹25,000."
22708
+ },
22709
+ {
22710
+ "specSlug": "dmt-fino-validate-ekyc-otp",
22711
+ "purpose": "Confirm the eKYC by submitting the OTP sent to the sender's Aadhaar-linked mobile, along with the `kyc_request_id` and `otp_ref_id` from the biometric step. The sender is fully KYC-verified on success."
22712
+ },
22713
+ {
22714
+ "specSlug": "dmt-get-recipients",
22715
+ "purpose": "List the sender's saved beneficiaries. If the one they want is already there, reuse its `recipient_id` and skip Add Recipient.",
22716
+ "branches": [
22717
+ {
22718
+ "onResponseTypeId": 22,
22719
+ "goto": "dmt-add-recipient",
22720
+ "note": "No recipients saved yet — add one before transacting."
22721
+ },
22722
+ {
22723
+ "onResponseTypeId": 23,
22724
+ "goto": "dmt-send-otp",
22725
+ "note": "Recipient already saved — reuse its `recipient_id`."
22726
+ }
22727
+ ]
23070
22728
  },
23071
22729
  {
23072
22730
  "specSlug": "dmt-add-recipient",
23073
- "purpose": "Add the beneficiary the sender wants to transfer to."
22731
+ "purpose": "Add the beneficiary the sender wants to transfer to; returns the `recipient_id` used by the two transaction steps."
23074
22732
  },
23075
22733
  {
23076
22734
  "specSlug": "dmt-send-otp",
23077
- "purpose": "Trigger the transaction OTP sent to the sender."
22735
+ "purpose": "Pre-authorise the transfer: sends an OTP to the sender's registered mobile and returns the `otp_ref_id`. Required before every transfer — request a fresh one per attempt."
23078
22736
  },
23079
22737
  {
23080
22738
  "specSlug": "dmt-initiate-transfer",
23081
- "purpose": "Submit the OTP-verified transfer to complete the flow.",
22739
+ "purpose": "Submit the transfer with the customer-entered OTP, its `otp_ref_id`, and a `client_ref_id` unique to this attempt. The only money-debit step — persist `tid` and `bank_ref_num` and reconcile before any retry.",
23082
22740
  "branches": [
23083
22741
  {
23084
- "onResponseStatusId": 0,
22742
+ "onStatus": 0,
23085
22743
  "goto": "done"
23086
22744
  }
23087
22745
  ]
@@ -23125,7 +22783,7 @@
23125
22783
  "purpose": "Perform the biometric Aadhaar-enabled cash withdrawal.",
23126
22784
  "branches": [
23127
22785
  {
23128
- "onResponseStatusId": 0,
22786
+ "onStatus": 0,
23129
22787
  "goto": "done"
23130
22788
  }
23131
22789
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ekoindia/eps-context-mcp",
3
- "version": "0.1.12",
3
+ "version": "0.1.13",
4
4
  "description": "Local MCP server giving AI coding agents context for Eko Platform Services (EPS) APIs.",
5
5
  "license": "MIT",
6
6
  "type": "module",