@settlemint/dalp-cli 3.1.33-main.42972921875 → 3.1.33-main.42986756300

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.
@@ -10315,8 +10315,8 @@
10315
10315
  "method": "POST",
10316
10316
  "url": "/api/v2/bank-rail/connections/{connectionId}/credits/{creditId}/transitions",
10317
10317
  "summary": "Retry, allocate or return a parked bank credit",
10318
- "description": "Transitions a parked credit. `retry` sends a credit that parked before anything minted back to minting; a `mint-unapproved` credit asks for mint approval again. `allocate` asks to move the suspense to a client of the connection, and `return-to-payer` asks to burn it under the bank's refund reference; each opens an approval and the credit waits in `awaiting-checker`. Refused when the credit's phase does not permit the transition.",
10319
- "help": "Transitions a parked credit. `retry` sends a credit that parked before anything minted back to minting; a `mint-unapproved` credit asks for mint approval again. `allocate` asks to move the suspense to a client of the connection, and `return-to-payer` asks to burn it under the bank's refund reference; each opens an approval and the credit waits in `awaiting-checker`. Refused when the credit's phase does not permit the transition.",
10318
+ "description": "Transitions a parked credit. `retry` sends a credit that parked before anything minted back to minting; a `mint-unapproved` credit asks for mint approval again, and so does one parked as `payer-account-not-verified`, `aml-rejected` or `aml-held`: a second bank rail manager must approve it, whatever the bank-rail approval setting, before it mints. `allocate` asks to move the suspense to a client of the connection, and `return-to-payer` asks to burn it under the bank's refund reference; each opens an approval and the credit waits in `awaiting-checker`. Refused when the credit's phase does not permit the transition.",
10319
+ "help": "Transitions a parked credit. `retry` sends a credit that parked before anything minted back to minting; a `mint-unapproved` credit asks for mint approval again, and so does one parked as `payer-account-not-verified`, `aml-rejected` or `aml-held`: a second bank rail manager must approve it, whatever the bank-rail approval setting, before it mints. `allocate` asks to move the suspense to a client of the connection, and `return-to-payer` asks to burn it under the bank's refund reference; each opens an approval and the credit waits in `awaiting-checker`. Refused when the credit's phase does not permit the transition.",
10320
10320
  "tags": [
10321
10321
  "Bank rail"
10322
10322
  ],
@@ -10364,7 +10364,7 @@
10364
10364
  "bodyFields": [],
10365
10365
  "examples": [
10366
10366
  {
10367
- "description": "Transitions a parked credit. `retry` sends a credit that parked before anything minted back to minting; a `mint-unapproved` credit asks for mint approval again. `allocate` asks to move the suspense to a client of the connection, and `return-to-payer` asks to burn it under the bank's refund reference; each opens an approval and the credit waits in `awaiting-checker`. Refused when the credit's phase does not permit the transition.",
10367
+ "description": "Transitions a parked credit. `retry` sends a credit that parked before anything minted back to minting; a `mint-unapproved` credit asks for mint approval again, and so does one parked as `payer-account-not-verified`, `aml-rejected` or `aml-held`: a second bank rail manager must approve it, whatever the bank-rail approval setting, before it mints. `allocate` asks to move the suspense to a client of the connection, and `return-to-payer` asks to burn it under the bank's refund reference; each opens an approval and the credit waits in `awaiting-checker`. Refused when the credit's phase does not permit the transition.",
10368
10368
  "path": {
10369
10369
  "connectionId": "<connectionId>",
10370
10370
  "creditId": "<creditId>"
@@ -10714,6 +10714,224 @@
10714
10714
  }
10715
10715
  ]
10716
10716
  },
10717
+ "bankRail/fiatScreeningSettingsRead": {
10718
+ "name": "bankRail/fiatScreeningSettingsRead",
10719
+ "method": "GET",
10720
+ "url": "/api/v2/bank-rail/connections/{connectionId}/screening-settings",
10721
+ "summary": "Read a bank connection's screening settings",
10722
+ "description": "Returns how the connection screens its fiat flows: the linked compliance provider that receives every confirmed credit and every cash-out as a fiat transaction (null leaves AML screening off), the provider's verification level when it needs one, and whether a credit must come from one of the client's active bank accounts (on by default). A connection that never saved settings returns the defaults with rowVersion 0.",
10723
+ "help": "Returns how the connection screens its fiat flows: the linked compliance provider that receives every confirmed credit and every cash-out as a fiat transaction (null leaves AML screening off), the provider's verification level when it needs one, and whether a credit must come from one of the client's active bank accounts (on by default). A connection that never saved settings returns the defaults with rowVersion 0.",
10724
+ "tags": [
10725
+ "Bank rail"
10726
+ ],
10727
+ "pathParams": [
10728
+ {
10729
+ "name": "connectionId",
10730
+ "in": "path",
10731
+ "required": true,
10732
+ "description": null,
10733
+ "type": "string",
10734
+ "enum": null,
10735
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$",
10736
+ "examples": [],
10737
+ "fields": []
10738
+ }
10739
+ ],
10740
+ "queryParams": [],
10741
+ "headerParams": [],
10742
+ "requestBodyDescription": null,
10743
+ "hasRequestBody": false,
10744
+ "bodyIsComplex": false,
10745
+ "bodyFields": [],
10746
+ "examples": [
10747
+ {
10748
+ "description": "Returns how the connection screens its fiat flows: the linked compliance provider that receives every confirmed credit and every cash-out as a fiat transaction (null leaves AML screening off), the provider's verification level when it needs one, and whether a credit must come from one of the client's active bank accounts (on by default). A connection that never saved settings returns the defaults with rowVersion 0.",
10749
+ "path": {
10750
+ "connectionId": "<connectionId>"
10751
+ }
10752
+ }
10753
+ ]
10754
+ },
10755
+ "bankRail/fiatScreeningSettingsUpdate": {
10756
+ "name": "bankRail/fiatScreeningSettingsUpdate",
10757
+ "method": "PUT",
10758
+ "url": "/api/v2/bank-rail/connections/{connectionId}/screening-settings",
10759
+ "summary": "Replace a bank connection's screening settings",
10760
+ "description": "Replaces the connection's screening settings when expectedRowVersion matches the stored row (0 for a connection that never saved any). The change applies to the next credit or cash-out the rail screens; a transaction already screened keeps its verdict. Turning the payer check off lets a credit from any account mint. The change is audited.",
10761
+ "help": "Replaces the connection's screening settings when expectedRowVersion matches the stored row (0 for a connection that never saved any). The change applies to the next credit or cash-out the rail screens; a transaction already screened keeps its verdict. Turning the payer check off lets a credit from any account mint. The change is audited.",
10762
+ "tags": [
10763
+ "Bank rail"
10764
+ ],
10765
+ "pathParams": [
10766
+ {
10767
+ "name": "connectionId",
10768
+ "in": "path",
10769
+ "required": true,
10770
+ "description": null,
10771
+ "type": "string",
10772
+ "enum": null,
10773
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$",
10774
+ "examples": [],
10775
+ "fields": []
10776
+ }
10777
+ ],
10778
+ "queryParams": [],
10779
+ "headerParams": [
10780
+ {
10781
+ "name": "Idempotency-Key",
10782
+ "in": "header",
10783
+ "required": false,
10784
+ "description": "Retry key for one mutation. Reuse it only for the same method, path, and body on a route that documents replay safety. If omitted, the platform generates a UUIDv7 key; replay-safe writes echo it in the `Idempotency-Key` response header. A lost response still requires status reconciliation.",
10785
+ "type": "string",
10786
+ "enum": null,
10787
+ "pattern": null,
10788
+ "examples": [],
10789
+ "fields": []
10790
+ }
10791
+ ],
10792
+ "requestBodyDescription": "Replaces how a bank connection screens its fiat flows.",
10793
+ "hasRequestBody": true,
10794
+ "bodyIsComplex": true,
10795
+ "bodyFields": [
10796
+ {
10797
+ "name": "payerAccountCheck",
10798
+ "in": "query",
10799
+ "required": true,
10800
+ "description": "Whether a credit must come from one of the client's active bank accounts. On by default: a credit from any other account is held as payer-account-not-verified and mints nothing.",
10801
+ "type": "boolean",
10802
+ "enum": null,
10803
+ "pattern": null,
10804
+ "examples": [],
10805
+ "fields": []
10806
+ },
10807
+ {
10808
+ "name": "expectedRowVersion",
10809
+ "in": "query",
10810
+ "required": true,
10811
+ "description": "The rowVersion of the settings you read; 0 when the connection has never saved any. A change made since you read them is refused.",
10812
+ "type": "integer",
10813
+ "enum": null,
10814
+ "pattern": null,
10815
+ "examples": [],
10816
+ "fields": []
10817
+ }
10818
+ ],
10819
+ "examples": [
10820
+ {
10821
+ "description": "Replaces the connection's screening settings when expectedRowVersion matches the stored row (0 for a connection that never saved any). The change applies to the next credit or cash-out the rail screens; a transaction already screened keeps its verdict. Turning the payer check off lets a credit from any account mint. The change is audited.",
10822
+ "path": {
10823
+ "connectionId": "<connectionId>"
10824
+ }
10825
+ }
10826
+ ]
10827
+ },
10828
+ "bankRail/fiatScreeningsList": {
10829
+ "name": "bankRail/fiatScreeningsList",
10830
+ "method": "GET",
10831
+ "url": "/api/v2/bank-rail/connections/{connectionId}/fiat-screenings",
10832
+ "summary": "List a bank connection's fiat screenings",
10833
+ "description": "Returns one page of the fiat transactions the rail screened on the connection, in screening order: the AML provider's verdict and score, the payer check, and the second manager's release when one was needed. filter[from] and filter[to] bound the date range the rail first screened the transaction in, `from` inclusive and `to` exclusive; page through the range to export it.",
10834
+ "help": "Returns one page of the fiat transactions the rail screened on the connection, in screening order: the AML provider's verdict and score, the payer check, and the second manager's release when one was needed. filter[from] and filter[to] bound the date range the rail first screened the transaction in, `from` inclusive and `to` exclusive; page through the range to export it.",
10835
+ "tags": [
10836
+ "Bank rail"
10837
+ ],
10838
+ "pathParams": [
10839
+ {
10840
+ "name": "connectionId",
10841
+ "in": "path",
10842
+ "required": true,
10843
+ "description": null,
10844
+ "type": "string",
10845
+ "enum": null,
10846
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$",
10847
+ "examples": [],
10848
+ "fields": []
10849
+ }
10850
+ ],
10851
+ "queryParams": [
10852
+ {
10853
+ "name": "filter",
10854
+ "in": "query",
10855
+ "required": false,
10856
+ "description": null,
10857
+ "type": "object",
10858
+ "enum": null,
10859
+ "pattern": null,
10860
+ "examples": [],
10861
+ "fields": [
10862
+ {
10863
+ "name": "from",
10864
+ "in": "query",
10865
+ "required": false,
10866
+ "description": null,
10867
+ "type": "string",
10868
+ "enum": null,
10869
+ "pattern": null,
10870
+ "examples": [],
10871
+ "fields": []
10872
+ },
10873
+ {
10874
+ "name": "to",
10875
+ "in": "query",
10876
+ "required": false,
10877
+ "description": null,
10878
+ "type": "string",
10879
+ "enum": null,
10880
+ "pattern": null,
10881
+ "examples": [],
10882
+ "fields": []
10883
+ }
10884
+ ]
10885
+ },
10886
+ {
10887
+ "name": "page",
10888
+ "in": "query",
10889
+ "required": false,
10890
+ "description": "JSON:API page window. Send `page[offset]` (first item index, from 0; a deep offset costs more, so a list that returns `meta.nextCursor` is better read with `page[cursor]`) and `page[limit]` (page size, 1-200, default 50). The response `links` object repeats these query parameters.",
10891
+ "type": "object",
10892
+ "enum": null,
10893
+ "pattern": null,
10894
+ "examples": [],
10895
+ "fields": [
10896
+ {
10897
+ "name": "offset",
10898
+ "in": "query",
10899
+ "required": false,
10900
+ "description": null,
10901
+ "type": "number",
10902
+ "enum": null,
10903
+ "pattern": null,
10904
+ "examples": [],
10905
+ "fields": []
10906
+ },
10907
+ {
10908
+ "name": "limit",
10909
+ "in": "query",
10910
+ "required": false,
10911
+ "description": null,
10912
+ "type": "number",
10913
+ "enum": null,
10914
+ "pattern": null,
10915
+ "examples": [],
10916
+ "fields": []
10917
+ }
10918
+ ]
10919
+ }
10920
+ ],
10921
+ "headerParams": [],
10922
+ "requestBodyDescription": null,
10923
+ "hasRequestBody": false,
10924
+ "bodyIsComplex": false,
10925
+ "bodyFields": [],
10926
+ "examples": [
10927
+ {
10928
+ "description": "Returns one page of the fiat transactions the rail screened on the connection, in screening order: the AML provider's verdict and score, the payer check, and the second manager's release when one was needed. filter[from] and filter[to] bound the date range the rail first screened the transaction in, `from` inclusive and `to` exclusive; page through the range to export it.",
10929
+ "path": {
10930
+ "connectionId": "<connectionId>"
10931
+ }
10932
+ }
10933
+ ]
10934
+ },
10717
10935
  "bankRail/participantBankAccountCreate": {
10718
10936
  "name": "bankRail/participantBankAccountCreate",
10719
10937
  "method": "POST",
@@ -79389,8 +79607,8 @@
79389
79607
  "method": "PATCH",
79390
79608
  "url": "/api/v2/users/{userId}/profile",
79391
79609
  "summary": "Save a user profile",
79392
- "description": "Saves profile values keyed by section slug and field key, and fixed fields by name, as one new version of the profile the user holds in the active organization; a key left out keeps its value and an empty string clears it. A user saves their own fixed and user-filled fields. An identity manager of the active organization saves any field of another user. A saved fixed or user-filled field becomes unreviewed; a manager-filled field is approved by the manager who saved it. With `approve: true` (Save and approve), an identity manager also approves every unreviewed field as of the new version. Only sections the organization sees are written. A field outside them, a field the caller may not write, or a value that does not fit its definition answers 400 naming each field as `<slug>.<key>`, never a value.",
79393
- "help": "Saves profile values keyed by section slug and field key, and fixed fields by name, as one new version of the profile the user holds in the active organization; a key left out keeps its value and an empty string clears it. A user saves their own fixed and user-filled fields. An identity manager of the active organization saves any field of another user. A saved fixed or user-filled field becomes unreviewed; a manager-filled field is approved by the manager who saved it. With `approve: true` (Save and approve), an identity manager also approves every unreviewed field as of the new version. Only sections the organization sees are written. A field outside them, a field the caller may not write, or a value that does not fit its definition answers 400 naming each field as `<slug>.<key>`, never a value.",
79610
+ "description": "Saves profile values keyed by section slug and field key, and fixed fields by name, as one new version of the profile the user holds in the active organization; a key left out keeps its value and an empty string clears it. A user saves their own fixed and user-filled fields. An identity manager of the active organization saves any field of another user. A saved fixed or user-filled field becomes unreviewed; a manager-filled field is approved by the manager who saved it. A version an identity manager corrected waits for a different reviewer to approve it, and `approve: true` is refused. Only sections the organization sees are written. A field outside them, a field the caller may not write, or a value that does not fit its definition answers 400 naming each field as `<slug>.<key>`, never a value.",
79611
+ "help": "Saves profile values keyed by section slug and field key, and fixed fields by name, as one new version of the profile the user holds in the active organization; a key left out keeps its value and an empty string clears it. A user saves their own fixed and user-filled fields. An identity manager of the active organization saves any field of another user. A saved fixed or user-filled field becomes unreviewed; a manager-filled field is approved by the manager who saved it. A version an identity manager corrected waits for a different reviewer to approve it, and `approve: true` is refused. Only sections the organization sees are written. A field outside them, a field the caller may not write, or a value that does not fit its definition answers 400 naming each field as `<slug>.<key>`, never a value.",
79394
79612
  "tags": [
79395
79613
  "Users"
79396
79614
  ],
@@ -79431,7 +79649,7 @@
79431
79649
  "name": "approve",
79432
79650
  "in": "query",
79433
79651
  "required": false,
79434
- "description": null,
79652
+ "description": "Refused when `true`: a profile is approved by an identity manager who did not edit it. Save without it, then have another identity manager approve the version through the profile decisions endpoint.",
79435
79653
  "type": "boolean",
79436
79654
  "enum": null,
79437
79655
  "pattern": null,
@@ -79441,7 +79659,7 @@
79441
79659
  ],
79442
79660
  "examples": [
79443
79661
  {
79444
- "description": "Saves profile values keyed by section slug and field key, and fixed fields by name, as one new version of the profile the user holds in the active organization; a key left out keeps its value and an empty string clears it. A user saves their own fixed and user-filled fields. An identity manager of the active organization saves any field of another user. A saved fixed or user-filled field becomes unreviewed; a manager-filled field is approved by the manager who saved it. With `approve: true` (Save and approve), an identity manager also approves every unreviewed field as of the new version. Only sections the organization sees are written. A field outside them, a field the caller may not write, or a value that does not fit its definition answers 400 naming each field as `<slug>.<key>`, never a value.",
79662
+ "description": "Saves profile values keyed by section slug and field key, and fixed fields by name, as one new version of the profile the user holds in the active organization; a key left out keeps its value and an empty string clears it. A user saves their own fixed and user-filled fields. An identity manager of the active organization saves any field of another user. A saved fixed or user-filled field becomes unreviewed; a manager-filled field is approved by the manager who saved it. A version an identity manager corrected waits for a different reviewer to approve it, and `approve: true` is refused. Only sections the organization sees are written. A field outside them, a field the caller may not write, or a value that does not fit its definition answers 400 naming each field as `<slug>.<key>`, never a value.",
79445
79663
  "path": {
79446
79664
  "userId": "<userId>"
79447
79665
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@settlemint/dalp-cli",
3
- "version": "3.1.33-main.42972921875",
3
+ "version": "3.1.33-main.42986756300",
4
4
  "private": false,
5
5
  "description": "CLI for the Digital Asset Lifecycle Platform — manage tokens, identities, compliance, and more from the command line.",
6
6
  "homepage": "https://settlemint.com",
@@ -50,14 +50,14 @@
50
50
  },
51
51
  "dependencies": {
52
52
  "@modelcontextprotocol/server": "2.4.0",
53
- "@settlemint/dalp-sdk": "3.1.33-main.42972921875",
53
+ "@settlemint/dalp-sdk": "3.1.33-main.42986756300",
54
54
  "incur": "0.7.1",
55
55
  "zod": "4.6.7"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@arethetypeswrong/cli": "0.18.5",
59
- "@testkit/effect-bun-test": "3.1.33-main.42972921875",
60
- "@tools/typescript-config": "3.1.33-main.42972921875",
59
+ "@testkit/effect-bun-test": "3.1.33-main.42986756300",
60
+ "@tools/typescript-config": "3.1.33-main.42986756300",
61
61
  "@types/bun": "1.4.4",
62
62
  "publint": "0.3.25"
63
63
  },
@@ -10315,8 +10315,8 @@
10315
10315
  "method": "POST",
10316
10316
  "url": "/api/v2/bank-rail/connections/{connectionId}/credits/{creditId}/transitions",
10317
10317
  "summary": "Retry, allocate or return a parked bank credit",
10318
- "description": "Transitions a parked credit. `retry` sends a credit that parked before anything minted back to minting; a `mint-unapproved` credit asks for mint approval again. `allocate` asks to move the suspense to a client of the connection, and `return-to-payer` asks to burn it under the bank's refund reference; each opens an approval and the credit waits in `awaiting-checker`. Refused when the credit's phase does not permit the transition.",
10319
- "help": "Transitions a parked credit. `retry` sends a credit that parked before anything minted back to minting; a `mint-unapproved` credit asks for mint approval again. `allocate` asks to move the suspense to a client of the connection, and `return-to-payer` asks to burn it under the bank's refund reference; each opens an approval and the credit waits in `awaiting-checker`. Refused when the credit's phase does not permit the transition.",
10318
+ "description": "Transitions a parked credit. `retry` sends a credit that parked before anything minted back to minting; a `mint-unapproved` credit asks for mint approval again, and so does one parked as `payer-account-not-verified`, `aml-rejected` or `aml-held`: a second bank rail manager must approve it, whatever the bank-rail approval setting, before it mints. `allocate` asks to move the suspense to a client of the connection, and `return-to-payer` asks to burn it under the bank's refund reference; each opens an approval and the credit waits in `awaiting-checker`. Refused when the credit's phase does not permit the transition.",
10319
+ "help": "Transitions a parked credit. `retry` sends a credit that parked before anything minted back to minting; a `mint-unapproved` credit asks for mint approval again, and so does one parked as `payer-account-not-verified`, `aml-rejected` or `aml-held`: a second bank rail manager must approve it, whatever the bank-rail approval setting, before it mints. `allocate` asks to move the suspense to a client of the connection, and `return-to-payer` asks to burn it under the bank's refund reference; each opens an approval and the credit waits in `awaiting-checker`. Refused when the credit's phase does not permit the transition.",
10320
10320
  "tags": [
10321
10321
  "Bank rail"
10322
10322
  ],
@@ -10364,7 +10364,7 @@
10364
10364
  "bodyFields": [],
10365
10365
  "examples": [
10366
10366
  {
10367
- "description": "Transitions a parked credit. `retry` sends a credit that parked before anything minted back to minting; a `mint-unapproved` credit asks for mint approval again. `allocate` asks to move the suspense to a client of the connection, and `return-to-payer` asks to burn it under the bank's refund reference; each opens an approval and the credit waits in `awaiting-checker`. Refused when the credit's phase does not permit the transition.",
10367
+ "description": "Transitions a parked credit. `retry` sends a credit that parked before anything minted back to minting; a `mint-unapproved` credit asks for mint approval again, and so does one parked as `payer-account-not-verified`, `aml-rejected` or `aml-held`: a second bank rail manager must approve it, whatever the bank-rail approval setting, before it mints. `allocate` asks to move the suspense to a client of the connection, and `return-to-payer` asks to burn it under the bank's refund reference; each opens an approval and the credit waits in `awaiting-checker`. Refused when the credit's phase does not permit the transition.",
10368
10368
  "path": {
10369
10369
  "connectionId": "<connectionId>",
10370
10370
  "creditId": "<creditId>"
@@ -10714,6 +10714,224 @@
10714
10714
  }
10715
10715
  ]
10716
10716
  },
10717
+ "bankRail/fiatScreeningSettingsRead": {
10718
+ "name": "bankRail/fiatScreeningSettingsRead",
10719
+ "method": "GET",
10720
+ "url": "/api/v2/bank-rail/connections/{connectionId}/screening-settings",
10721
+ "summary": "Read a bank connection's screening settings",
10722
+ "description": "Returns how the connection screens its fiat flows: the linked compliance provider that receives every confirmed credit and every cash-out as a fiat transaction (null leaves AML screening off), the provider's verification level when it needs one, and whether a credit must come from one of the client's active bank accounts (on by default). A connection that never saved settings returns the defaults with rowVersion 0.",
10723
+ "help": "Returns how the connection screens its fiat flows: the linked compliance provider that receives every confirmed credit and every cash-out as a fiat transaction (null leaves AML screening off), the provider's verification level when it needs one, and whether a credit must come from one of the client's active bank accounts (on by default). A connection that never saved settings returns the defaults with rowVersion 0.",
10724
+ "tags": [
10725
+ "Bank rail"
10726
+ ],
10727
+ "pathParams": [
10728
+ {
10729
+ "name": "connectionId",
10730
+ "in": "path",
10731
+ "required": true,
10732
+ "description": null,
10733
+ "type": "string",
10734
+ "enum": null,
10735
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$",
10736
+ "examples": [],
10737
+ "fields": []
10738
+ }
10739
+ ],
10740
+ "queryParams": [],
10741
+ "headerParams": [],
10742
+ "requestBodyDescription": null,
10743
+ "hasRequestBody": false,
10744
+ "bodyIsComplex": false,
10745
+ "bodyFields": [],
10746
+ "examples": [
10747
+ {
10748
+ "description": "Returns how the connection screens its fiat flows: the linked compliance provider that receives every confirmed credit and every cash-out as a fiat transaction (null leaves AML screening off), the provider's verification level when it needs one, and whether a credit must come from one of the client's active bank accounts (on by default). A connection that never saved settings returns the defaults with rowVersion 0.",
10749
+ "path": {
10750
+ "connectionId": "<connectionId>"
10751
+ }
10752
+ }
10753
+ ]
10754
+ },
10755
+ "bankRail/fiatScreeningSettingsUpdate": {
10756
+ "name": "bankRail/fiatScreeningSettingsUpdate",
10757
+ "method": "PUT",
10758
+ "url": "/api/v2/bank-rail/connections/{connectionId}/screening-settings",
10759
+ "summary": "Replace a bank connection's screening settings",
10760
+ "description": "Replaces the connection's screening settings when expectedRowVersion matches the stored row (0 for a connection that never saved any). The change applies to the next credit or cash-out the rail screens; a transaction already screened keeps its verdict. Turning the payer check off lets a credit from any account mint. The change is audited.",
10761
+ "help": "Replaces the connection's screening settings when expectedRowVersion matches the stored row (0 for a connection that never saved any). The change applies to the next credit or cash-out the rail screens; a transaction already screened keeps its verdict. Turning the payer check off lets a credit from any account mint. The change is audited.",
10762
+ "tags": [
10763
+ "Bank rail"
10764
+ ],
10765
+ "pathParams": [
10766
+ {
10767
+ "name": "connectionId",
10768
+ "in": "path",
10769
+ "required": true,
10770
+ "description": null,
10771
+ "type": "string",
10772
+ "enum": null,
10773
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$",
10774
+ "examples": [],
10775
+ "fields": []
10776
+ }
10777
+ ],
10778
+ "queryParams": [],
10779
+ "headerParams": [
10780
+ {
10781
+ "name": "Idempotency-Key",
10782
+ "in": "header",
10783
+ "required": false,
10784
+ "description": "Retry key for one mutation. Reuse it only for the same method, path, and body on a route that documents replay safety. If omitted, the platform generates a UUIDv7 key; replay-safe writes echo it in the `Idempotency-Key` response header. A lost response still requires status reconciliation.",
10785
+ "type": "string",
10786
+ "enum": null,
10787
+ "pattern": null,
10788
+ "examples": [],
10789
+ "fields": []
10790
+ }
10791
+ ],
10792
+ "requestBodyDescription": "Replaces how a bank connection screens its fiat flows.",
10793
+ "hasRequestBody": true,
10794
+ "bodyIsComplex": true,
10795
+ "bodyFields": [
10796
+ {
10797
+ "name": "payerAccountCheck",
10798
+ "in": "query",
10799
+ "required": true,
10800
+ "description": "Whether a credit must come from one of the client's active bank accounts. On by default: a credit from any other account is held as payer-account-not-verified and mints nothing.",
10801
+ "type": "boolean",
10802
+ "enum": null,
10803
+ "pattern": null,
10804
+ "examples": [],
10805
+ "fields": []
10806
+ },
10807
+ {
10808
+ "name": "expectedRowVersion",
10809
+ "in": "query",
10810
+ "required": true,
10811
+ "description": "The rowVersion of the settings you read; 0 when the connection has never saved any. A change made since you read them is refused.",
10812
+ "type": "integer",
10813
+ "enum": null,
10814
+ "pattern": null,
10815
+ "examples": [],
10816
+ "fields": []
10817
+ }
10818
+ ],
10819
+ "examples": [
10820
+ {
10821
+ "description": "Replaces the connection's screening settings when expectedRowVersion matches the stored row (0 for a connection that never saved any). The change applies to the next credit or cash-out the rail screens; a transaction already screened keeps its verdict. Turning the payer check off lets a credit from any account mint. The change is audited.",
10822
+ "path": {
10823
+ "connectionId": "<connectionId>"
10824
+ }
10825
+ }
10826
+ ]
10827
+ },
10828
+ "bankRail/fiatScreeningsList": {
10829
+ "name": "bankRail/fiatScreeningsList",
10830
+ "method": "GET",
10831
+ "url": "/api/v2/bank-rail/connections/{connectionId}/fiat-screenings",
10832
+ "summary": "List a bank connection's fiat screenings",
10833
+ "description": "Returns one page of the fiat transactions the rail screened on the connection, in screening order: the AML provider's verdict and score, the payer check, and the second manager's release when one was needed. filter[from] and filter[to] bound the date range the rail first screened the transaction in, `from` inclusive and `to` exclusive; page through the range to export it.",
10834
+ "help": "Returns one page of the fiat transactions the rail screened on the connection, in screening order: the AML provider's verdict and score, the payer check, and the second manager's release when one was needed. filter[from] and filter[to] bound the date range the rail first screened the transaction in, `from` inclusive and `to` exclusive; page through the range to export it.",
10835
+ "tags": [
10836
+ "Bank rail"
10837
+ ],
10838
+ "pathParams": [
10839
+ {
10840
+ "name": "connectionId",
10841
+ "in": "path",
10842
+ "required": true,
10843
+ "description": null,
10844
+ "type": "string",
10845
+ "enum": null,
10846
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$",
10847
+ "examples": [],
10848
+ "fields": []
10849
+ }
10850
+ ],
10851
+ "queryParams": [
10852
+ {
10853
+ "name": "filter",
10854
+ "in": "query",
10855
+ "required": false,
10856
+ "description": null,
10857
+ "type": "object",
10858
+ "enum": null,
10859
+ "pattern": null,
10860
+ "examples": [],
10861
+ "fields": [
10862
+ {
10863
+ "name": "from",
10864
+ "in": "query",
10865
+ "required": false,
10866
+ "description": null,
10867
+ "type": "string",
10868
+ "enum": null,
10869
+ "pattern": null,
10870
+ "examples": [],
10871
+ "fields": []
10872
+ },
10873
+ {
10874
+ "name": "to",
10875
+ "in": "query",
10876
+ "required": false,
10877
+ "description": null,
10878
+ "type": "string",
10879
+ "enum": null,
10880
+ "pattern": null,
10881
+ "examples": [],
10882
+ "fields": []
10883
+ }
10884
+ ]
10885
+ },
10886
+ {
10887
+ "name": "page",
10888
+ "in": "query",
10889
+ "required": false,
10890
+ "description": "JSON:API page window. Send `page[offset]` (first item index, from 0; a deep offset costs more, so a list that returns `meta.nextCursor` is better read with `page[cursor]`) and `page[limit]` (page size, 1-200, default 50). The response `links` object repeats these query parameters.",
10891
+ "type": "object",
10892
+ "enum": null,
10893
+ "pattern": null,
10894
+ "examples": [],
10895
+ "fields": [
10896
+ {
10897
+ "name": "offset",
10898
+ "in": "query",
10899
+ "required": false,
10900
+ "description": null,
10901
+ "type": "number",
10902
+ "enum": null,
10903
+ "pattern": null,
10904
+ "examples": [],
10905
+ "fields": []
10906
+ },
10907
+ {
10908
+ "name": "limit",
10909
+ "in": "query",
10910
+ "required": false,
10911
+ "description": null,
10912
+ "type": "number",
10913
+ "enum": null,
10914
+ "pattern": null,
10915
+ "examples": [],
10916
+ "fields": []
10917
+ }
10918
+ ]
10919
+ }
10920
+ ],
10921
+ "headerParams": [],
10922
+ "requestBodyDescription": null,
10923
+ "hasRequestBody": false,
10924
+ "bodyIsComplex": false,
10925
+ "bodyFields": [],
10926
+ "examples": [
10927
+ {
10928
+ "description": "Returns one page of the fiat transactions the rail screened on the connection, in screening order: the AML provider's verdict and score, the payer check, and the second manager's release when one was needed. filter[from] and filter[to] bound the date range the rail first screened the transaction in, `from` inclusive and `to` exclusive; page through the range to export it.",
10929
+ "path": {
10930
+ "connectionId": "<connectionId>"
10931
+ }
10932
+ }
10933
+ ]
10934
+ },
10717
10935
  "bankRail/participantBankAccountCreate": {
10718
10936
  "name": "bankRail/participantBankAccountCreate",
10719
10937
  "method": "POST",
@@ -79389,8 +79607,8 @@
79389
79607
  "method": "PATCH",
79390
79608
  "url": "/api/v2/users/{userId}/profile",
79391
79609
  "summary": "Save a user profile",
79392
- "description": "Saves profile values keyed by section slug and field key, and fixed fields by name, as one new version of the profile the user holds in the active organization; a key left out keeps its value and an empty string clears it. A user saves their own fixed and user-filled fields. An identity manager of the active organization saves any field of another user. A saved fixed or user-filled field becomes unreviewed; a manager-filled field is approved by the manager who saved it. With `approve: true` (Save and approve), an identity manager also approves every unreviewed field as of the new version. Only sections the organization sees are written. A field outside them, a field the caller may not write, or a value that does not fit its definition answers 400 naming each field as `<slug>.<key>`, never a value.",
79393
- "help": "Saves profile values keyed by section slug and field key, and fixed fields by name, as one new version of the profile the user holds in the active organization; a key left out keeps its value and an empty string clears it. A user saves their own fixed and user-filled fields. An identity manager of the active organization saves any field of another user. A saved fixed or user-filled field becomes unreviewed; a manager-filled field is approved by the manager who saved it. With `approve: true` (Save and approve), an identity manager also approves every unreviewed field as of the new version. Only sections the organization sees are written. A field outside them, a field the caller may not write, or a value that does not fit its definition answers 400 naming each field as `<slug>.<key>`, never a value.",
79610
+ "description": "Saves profile values keyed by section slug and field key, and fixed fields by name, as one new version of the profile the user holds in the active organization; a key left out keeps its value and an empty string clears it. A user saves their own fixed and user-filled fields. An identity manager of the active organization saves any field of another user. A saved fixed or user-filled field becomes unreviewed; a manager-filled field is approved by the manager who saved it. A version an identity manager corrected waits for a different reviewer to approve it, and `approve: true` is refused. Only sections the organization sees are written. A field outside them, a field the caller may not write, or a value that does not fit its definition answers 400 naming each field as `<slug>.<key>`, never a value.",
79611
+ "help": "Saves profile values keyed by section slug and field key, and fixed fields by name, as one new version of the profile the user holds in the active organization; a key left out keeps its value and an empty string clears it. A user saves their own fixed and user-filled fields. An identity manager of the active organization saves any field of another user. A saved fixed or user-filled field becomes unreviewed; a manager-filled field is approved by the manager who saved it. A version an identity manager corrected waits for a different reviewer to approve it, and `approve: true` is refused. Only sections the organization sees are written. A field outside them, a field the caller may not write, or a value that does not fit its definition answers 400 naming each field as `<slug>.<key>`, never a value.",
79394
79612
  "tags": [
79395
79613
  "Users"
79396
79614
  ],
@@ -79431,7 +79649,7 @@
79431
79649
  "name": "approve",
79432
79650
  "in": "query",
79433
79651
  "required": false,
79434
- "description": null,
79652
+ "description": "Refused when `true`: a profile is approved by an identity manager who did not edit it. Save without it, then have another identity manager approve the version through the profile decisions endpoint.",
79435
79653
  "type": "boolean",
79436
79654
  "enum": null,
79437
79655
  "pattern": null,
@@ -79441,7 +79659,7 @@
79441
79659
  ],
79442
79660
  "examples": [
79443
79661
  {
79444
- "description": "Saves profile values keyed by section slug and field key, and fixed fields by name, as one new version of the profile the user holds in the active organization; a key left out keeps its value and an empty string clears it. A user saves their own fixed and user-filled fields. An identity manager of the active organization saves any field of another user. A saved fixed or user-filled field becomes unreviewed; a manager-filled field is approved by the manager who saved it. With `approve: true` (Save and approve), an identity manager also approves every unreviewed field as of the new version. Only sections the organization sees are written. A field outside them, a field the caller may not write, or a value that does not fit its definition answers 400 naming each field as `<slug>.<key>`, never a value.",
79662
+ "description": "Saves profile values keyed by section slug and field key, and fixed fields by name, as one new version of the profile the user holds in the active organization; a key left out keeps its value and an empty string clears it. A user saves their own fixed and user-filled fields. An identity manager of the active organization saves any field of another user. A saved fixed or user-filled field becomes unreviewed; a manager-filled field is approved by the manager who saved it. A version an identity manager corrected waits for a different reviewer to approve it, and `approve: true` is refused. Only sections the organization sees are written. A field outside them, a field the caller may not write, or a value that does not fit its definition answers 400 naming each field as `<slug>.<key>`, never a value.",
79445
79663
  "path": {
79446
79664
  "userId": "<userId>"
79447
79665
  }
package/src/hosted-mcp.ts CHANGED
@@ -14,6 +14,9 @@ export type HostedExecutionMode = (typeof HOSTED_EXECUTION_MODES)[number];
14
14
 
15
15
  export const PREPARE_GROUP = "prepare";
16
16
 
17
+ export const PREPARE_GROUP_DESCRIPTION =
18
+ "Prepare a write for a person to review and sign in DALP. With execution mandate, a tool that runs under a mandate executes the write at once as the organisation's agent principal, and no person signs.";
19
+
17
20
  export interface PrepareToolField {
18
21
  readonly description: string;
19
22
  readonly required: boolean;
@@ -24,6 +27,7 @@ export interface PrepareTool {
24
27
  readonly name: string;
25
28
  readonly description: string;
26
29
  readonly fields: Readonly<Record<string, PrepareToolField>>;
30
+ readonly runsUnderMandate: boolean;
27
31
  }
28
32
 
29
33
  export interface PrepareCall {
@@ -57,7 +61,7 @@ const executionOption = z
57
61
  .enum(HOSTED_EXECUTION_MODES)
58
62
  .default("inbox")
59
63
  .describe(
60
- "inbox (default): post the prepared write to the member's DALP inbox, where a person reviews and signs it. mandate: execute as the organisation's agent principal, only inside its mandate."
64
+ "inbox (default): post the prepared write to the member's DALP inbox, where a person reviews and signs it. mandate: execute the write at once as the organisation's agent principal, only inside its mandate, and no person signs."
61
65
  );
62
66
 
63
67
  const fieldOption = (field: PrepareToolField) => {
@@ -70,7 +74,7 @@ type PrepareOptions = Readonly<Record<string, string | undefined>>;
70
74
 
71
75
  const prepareCommand = (tool: PrepareTool) => ({
72
76
  description: tool.description,
73
- mcp: { annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false } },
77
+ mcp: { annotations: { readOnlyHint: false, destructiveHint: tool.runsUnderMandate, idempotentHint: false } },
74
78
  options: z.object({
75
79
  assetId: z.string().describe("The asset the write acts on: its contract address."),
76
80
  ...Object.fromEntries(Object.entries(tool.fields).map(([name, field]) => [name, fieldOption(field)])),
@@ -115,7 +119,7 @@ export function makeHostedMcpTools(input: { readonly prepareTools: ReadonlyArray
115
119
  const cli = Cli.create("dalp", { version: CLI_VERSION, vars: hostedVars });
116
120
  registerGeneratedOperations(cli, reads);
117
121
  const prepare = Cli.create(PREPARE_GROUP, {
118
- description: "Prepare a write for a person to review and sign in DALP.",
122
+ description: PREPARE_GROUP_DESCRIPTION,
119
123
  vars: hostedVars,
120
124
  });
121
125
  for (const tool of input.prepareTools) {