@noresponse/mcp 0.10.2 → 0.10.4

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/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.10.4
4
+
5
+ * `SDK.assessments.search()`:
6
+ * `request.identifier` **Added**
7
+ * `response.items[].matched_identifier` **Added**
8
+ * `SDK.accounts.search()`:
9
+ * `request.identifier` **Added**
10
+ * `response.items[].matched_identifier` **Added**
11
+
12
+ ## 0.10.3
13
+
14
+ * `SDK.accounts.search()`:
15
+ * `request.needs_action` **Added**
16
+ * `response.items[].waiting_for` **Added**
17
+ * `SDK.reviews.list()`:
18
+ * `request.account_id` **Added**
19
+ * `SDK.reviews.listViews()`: `response.items[].filter.account_id` **Added**
20
+ * `SDK.reviews.createView()`:
21
+ * `request.body.filter.account_id` **Added**
22
+ * `response.filter.account_id` **Added**
23
+ * `SDK.reviews.updateView()`:
24
+ * `request.body.filter.account_id` **Added**
25
+ * `response.filter.account_id` **Added**
26
+
3
27
  ## 0.10.2
4
28
 
5
29
  * `SDK.assessments.create()`: `response.account.risk.reasons[].code.enum(no_email_matches)` **Added** (Breaking ⚠️)
package/bin/mcp-server.js CHANGED
@@ -48136,9 +48136,9 @@ var init_config = __esm(() => {
48136
48136
  SDK_METADATA = {
48137
48137
  language: "typescript",
48138
48138
  openapiDocVersion: "1",
48139
- sdkVersion: "0.10.2",
48139
+ sdkVersion: "0.10.4",
48140
48140
  genVersion: "internal",
48141
- userAgent: "noresponse-sdk/mcp-typescript 0.10.2 internal 1 @noresponse/mcp"
48141
+ userAgent: "noresponse-sdk/mcp-typescript 0.10.4 internal 1 @noresponse/mcp"
48142
48142
  };
48143
48143
  });
48144
48144
 
@@ -54848,16 +54848,65 @@ Retrieve the account decision at one recorded risk version. The answer uses the
54848
54848
  };
54849
54849
  });
54850
54850
 
54851
+ // src/models/identifiersearchkind.ts
54852
+ var IdentifierSearchKind$zodSchema;
54853
+ var init_identifiersearchkind = __esm(() => {
54854
+ init_zod();
54855
+ IdentifierSearchKind$zodSchema = _enum([
54856
+ "email",
54857
+ "phone",
54858
+ "username"
54859
+ ]);
54860
+ });
54861
+
54862
+ // src/models/match.ts
54863
+ var Match$zodSchema;
54864
+ var init_match = __esm(() => {
54865
+ init_zod();
54866
+ Match$zodSchema = _enum([
54867
+ "exact",
54868
+ "canonical",
54869
+ "mailbox"
54870
+ ]).describe("exact compares the original submitted value; canonical uses identifier-specific normalisation; mailbox explicitly selects the email alias rules used by lists.");
54871
+ });
54872
+
54873
+ // src/models/namespace.ts
54874
+ var Namespace$zodSchema;
54875
+ var init_namespace = __esm(() => {
54876
+ init_zod();
54877
+ Namespace$zodSchema = _enum([
54878
+ "customer"
54879
+ ]).describe("Required for username: the username submitted by this customer in this workspace/environment. It does not name or join a source platform. Omit for email and phone.");
54880
+ });
54881
+
54882
+ // src/models/identifiersearch.ts
54883
+ var IdentifierSearch$zodSchema;
54884
+ var init_identifiersearch = __esm(() => {
54885
+ init_zod();
54886
+ init_identifiersearchkind();
54887
+ init_match();
54888
+ init_namespace();
54889
+ IdentifierSearch$zodSchema = object({
54890
+ kind: IdentifierSearchKind$zodSchema,
54891
+ match: Match$zodSchema.optional().describe("exact compares the original submitted value; canonical uses identifier-specific normalisation; mailbox explicitly selects the email alias rules used by lists."),
54892
+ namespace: Namespace$zodSchema.optional().describe("Required for username: the username submitted by this customer in this workspace/environment. It does not name or join a source platform. Omit for email and phone."),
54893
+ value: string2().describe("The comparison value. Stored original identifiers remain unchanged. An invalid identifier is refused instead of returning an empty result.")
54894
+ }).describe("One customer-submitted identifier. Defaults to exact comparison of the original submitted value. canonical uses the supported identifier normalisation without an ownership claim: email preserves local-part case, NFC-normalises it and lowercases the domain without removing dots or tags; phone uses international E.164 without extensions or an inferred region; username uses NFC and Unicode case folding within the customer namespace. mailbox is email-only and explicitly selects existing list rules: case-insensitive, remove +tag, and ignore local-part dots at gmail.com and googlemail.com; googlemail.com maps to gmail.com. Username requires namespace customer. Email and phone forbid namespace. Source-discovered identifiers and platform handles are not searched. Unsupported kinds, namespaces, modes and invalid values return 400. Search equality does not establish verified ownership or merge accounts.");
54895
+ });
54896
+
54851
54897
  // src/models/accountdirectorysearchrequest.ts
54852
54898
  var AccountDirectorySearchRequest$zodSchema;
54853
54899
  var init_accountdirectorysearchrequest = __esm(() => {
54854
54900
  init_zod();
54901
+ init_identifiersearch();
54855
54902
  AccountDirectorySearchRequest$zodSchema = object({
54856
54903
  account_id: string2().optional().describe("Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id} and its /assessments. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id."),
54857
54904
  cursor: string2().optional().describe("Opaque, expiring cursor bound to this environment, operation and every filter. Keep the filters unchanged."),
54858
54905
  email: string2().optional().describe("Assessments of every account that one of its retained admitted assessments sent this mailbox as identifiers.email, matched as lists match an email entry: case-insensitive, a +tag removed and, at gmail.com and googlemail.com, the dots of the local part ignored. Only assessments stored since email list matching began carry the mailbox. An address that is not a valid mailbox is refused with 400."),
54859
- limit: int().default(25)
54860
- }).describe("Bounded distinct-account search for a single authenticated workspace/environment. Email matches any retained admitted assessment of an account, using assessment search's canonical mailbox rules. No assessment history download is required.");
54906
+ identifier: IdentifierSearch$zodSchema.optional().describe("One customer-submitted identifier. Defaults to exact comparison of the original submitted value. canonical uses the supported identifier normalisation without an ownership claim: email preserves local-part case, NFC-normalises it and lowercases the domain without removing dots or tags; phone uses international E.164 without extensions or an inferred region; username uses NFC and Unicode case folding within the customer namespace. mailbox is email-only and explicitly selects existing list rules: case-insensitive, remove +tag, and ignore local-part dots at gmail.com and googlemail.com; googlemail.com maps to gmail.com. Username requires namespace customer. Email and phone forbid namespace. Source-discovered identifiers and platform handles are not searched. Unsupported kinds, namespaces, modes and invalid values return 400. Search equality does not establish verified ownership or merge accounts."),
54907
+ limit: int().default(25),
54908
+ needs_action: boolean2().default(false).describe("Select accounts with a retained open or in-progress review, or a current review/block account decision with no retained effective account outcome. The server applies this filter before counting and pagination. Requires reviews.read as well as history.read for console members; API keys additionally require management.")
54909
+ }).describe("Bounded distinct-account search for one authenticated workspace/environment. identifier matches any retained admitted assessment of an account, including historical submitted values. email preserves the legacy canonical-mailbox filter. identifier and email cannot be combined. All other filters combine using AND. Typed identifier search uses stable opaque account order; ordinary and legacy email searches retain newest-seen ordering. Pages are live, not a cross-page snapshot. Requires history or investigate authority and identifier-read permission for identifier or email filtering.");
54861
54910
  });
54862
54911
 
54863
54912
  // src/funcs/accountsSearch.ts
@@ -54951,9 +55000,9 @@ var init_accountsSearch2 = __esm(() => {
54951
55000
  };
54952
55001
  tool$accountsSearch = {
54953
55002
  name: "search_accounts",
54954
- description: `Search distinct accounts by email or account ID
55003
+ description: `Search distinct accounts by submitted identifier or account ID
54955
55004
 
54956
- Search distinct accounts observed in retained assessments in this environment. Match an exact account_id or canonical email; an email matches any retained assessment belonging to the account. The response contains one row per account with its newest retained assessment, current decision when available, per-account assessment count, and total distinct-account count. Send next_cursor with unchanged filters to continue. Totals are exact below 10000 and capped at 10000. Results are live across pages. Requires history access and identifier access for email. Read-only and safe to retry.`,
55005
+ Search distinct accounts observed in retained assessments in this environment. identifier matches an exact, canonical or explicitly selected mailbox form of a submitted email, phone or customer-namespace username. It matches historical retained inputs and returns matched_identifier with the original value and matching assessment. Each row has its newest retained assessment, current account decision when available, retained assessment count, and total distinct-account count. identifier and legacy email are mutually exclusive; account_id and needs_action combine with either using AND. Set needs_action to select accounts with a retained open or in-progress review, or a current review/block account decision without an effective retained account outcome. This filter applies before counting and pagination and adds waiting_for reasons. Current decisions include account list overrides and shared-key scoring and preserve admission holds. Typed identifier search uses stable opaque account order; ordinary and legacy email searches retain newest-seen order. Results are live across pages; each page's items and total share a database snapshot, while current account risk is read separately. Cursors are expiring and bound to scope, operation and filters. Totals are exact below 10000 and capped at 10000. Requires history or investigate authority and identifier-read permission for identifier or email filtering. needs_action additionally requires management scope. Source-discovered associations are not searched and equality is not verified ownership.`,
54957
55006
  annotations: {
54958
55007
  title: "Search retained accounts by identifier",
54959
55008
  destructiveHint: false,
@@ -56390,6 +56439,7 @@ var init_assessmentsearchrequest = __esm(() => {
56390
56439
  init_band();
56391
56440
  init_decision();
56392
56441
  init_flow();
56442
+ init_identifiersearch();
56393
56443
  init_impact();
56394
56444
  init_lane();
56395
56445
  init_listmatch();
@@ -56408,6 +56458,7 @@ var init_assessmentsearchrequest = __esm(() => {
56408
56458
  email: string2().optional().describe("Assessments of every account that one of its retained admitted assessments sent this mailbox as identifiers.email, matched as lists match an email entry: case-insensitive, a +tag removed and, at gmail.com and googlemail.com, the dots of the local part ignored. Only assessments stored since email list matching began carry the mailbox. An address that is not a valid mailbox is refused with 400."),
56409
56459
  flow: Flow$zodSchema.optional().describe("The event an assessment is made for: account_creation (a user creates an account), login (a user returns to an existing account) or purchase (a payment or a credit grant). The account's risk is reported with the decision for this flow."),
56410
56460
  from: string2(),
56461
+ identifier: IdentifierSearch$zodSchema.optional().describe("One customer-submitted identifier. Defaults to exact comparison of the original submitted value. canonical uses the supported identifier normalisation without an ownership claim: email preserves local-part case, NFC-normalises it and lowercases the domain without removing dots or tags; phone uses international E.164 without extensions or an inferred region; username uses NFC and Unicode case folding within the customer namespace. mailbox is email-only and explicitly selects existing list rules: case-insensitive, remove +tag, and ignore local-part dots at gmail.com and googlemail.com; googlemail.com maps to gmail.com. Username requires namespace customer. Email and phone forbid namespace. Source-discovered identifiers and platform handles are not searched. Unsupported kinds, namespaces, modes and invalid values return 400. Search equality does not establish verified ownership or merge accounts."),
56411
56462
  impact: Impact$zodSchema.optional().describe("The selected reason's served impact band. Requires reason."),
56412
56463
  lane: Lane$zodSchema.optional().describe("An evidence lane: accounts (account presence for email and username), phone, breach, domain (the email domain's registration) and ip."),
56413
56464
  limit: int().default(20),
@@ -56420,7 +56471,7 @@ var init_assessmentsearchrequest = __esm(() => {
56420
56471
  score_min: int().optional().describe("Inclusive lower score bound. Pending answers without a score do not match."),
56421
56472
  status: Status$zodSchema.optional().describe("Processing state, separate from evidence coverage. complete: final; nothing is still running, but unsupported, failed or unanswered lanes remain in incomplete_sources. partial: a recommendation exists and evidence is incomplete; assessment_url identifies continuing work when present. pending: no recommendation yet; poll or wait for the webhook. Finished processing does not mean all sources answered."),
56422
56473
  to: string2()
56423
- }).describe("Search retained assessments created in [from,to), over at most 366 days. Filters use each assessment decision, rather than the current account decision. Results can change between pages. Keep the assessment version to retrieve the exact decision later. This read does not require an idempotency key.");
56474
+ }).describe("Search retained assessments created in [from,to), at most 366 days. identifier matches the submitted value of each returned assessment directly. The legacy email filter keeps its account-wide mailbox semantics and cannot be combined with identifier. Other filters combine using AND and describe assessment decisions, separate from current account decisions. Results use newest-created order with an assessment-ID tie break and are live, not a snapshot across pages. Requires history or investigate authority; identifier/email filtering also requires identifier-read permission. Detailed response mode additionally requires detailed permission. No Idempotency-Key.");
56424
56475
  });
56425
56476
 
56426
56477
  // src/funcs/assessmentsSearch.ts
@@ -56516,7 +56567,7 @@ var init_assessmentsSearch2 = __esm(() => {
56516
56567
  name: "search_assessments",
56517
56568
  description: `Search assessments across this environment
56518
56569
 
56519
- Search retained assessments created in [from,to), over at most 366 days. Filters use each assessment decision, rather than the current account decision. Results can change between pages. Keep the assessment version to retrieve the exact decision later. Each item's detail.identifiers holds the identifiers its assessment was sent, exactly as received, and first_decision holds the decision of its first answer. email finds every assessment of the accounts that sent a mailbox, matched as lists match it. changed keeps the assessments a later revision changed. total counts every match, exactly up to 10000. This read does not require an idempotency key.`,
56570
+ Search retained assessments created in [from,to), at most 366 days. identifier directly matches that assessment's submitted email, phone or customer-namespace username using exact, canonical or explicitly selected email mailbox matching. matched_identifier explains the original value and match basis. Legacy email keeps its account-wide mailbox semantics and cannot be combined with identifier. Other filters combine using AND and describe assessment decisions, separate from current account decisions. Each item carries the original submitted identifiers and its first_decision when available. Newest-created order has an assessment-ID tie break. Results are live across pages; each page's total and items use one database snapshot. Totals are exact below 10000 and capped at 10000. Requires history or investigate authority and identifier-read permission for identifier/email filters; detailed mode also requires detailed permission. No Idempotency-Key.`,
56520
56571
  annotations: {
56521
56572
  title: "Search assessments in this environment",
56522
56573
  destructiveHint: false,
@@ -64828,6 +64879,7 @@ var init_filter = __esm(() => {
64828
64879
  init_priority();
64829
64880
  init_reviewstatus();
64830
64881
  Filter$zodSchema = object({
64882
+ account_id: string2().optional().describe("Only reviews of this exact account in the authenticated workspace and environment. Applied before pagination."),
64831
64883
  assignee: string2().optional(),
64832
64884
  assignee_principal_id: string2().optional(),
64833
64885
  priority: Priority$zodSchema.optional(),
@@ -65764,6 +65816,7 @@ var init_listreviewsop = __esm(() => {
65764
65816
  init_reviewlist();
65765
65817
  init_reviewstatus();
65766
65818
  ListReviewsRequest$zodSchema = object({
65819
+ account_id: string2().describe("Only reviews of this exact account in the authenticated workspace and environment. Applied before pagination and bound into the cursor.").optional(),
65767
65820
  assignee: string2().optional(),
65768
65821
  assignee_principal_id: string2().describe("Filter by immutable member ID. Mutually exclusive with assignee and unassigned=true.").optional(),
65769
65822
  cursor: string2().optional(),
@@ -65820,6 +65873,7 @@ async function $do73(client$, request, options) {
65820
65873
  };
65821
65874
  const path$ = pathToFunc("/v1/workspaces/{workspace_id}/reviews/{environment}")(pathParams$);
65822
65875
  const query$ = encodeFormQuery({
65876
+ account_id: payload$.account_id,
65823
65877
  assignee: payload$.assignee,
65824
65878
  assignee_principal_id: payload$.assignee_principal_id,
65825
65879
  cursor: payload$.cursor,
@@ -65909,7 +65963,7 @@ var init_reviewsList2 = __esm(() => {
65909
65963
  name: "list_reviews",
65910
65964
  description: `List retained account reviews.
65911
65965
 
65912
- List retained investigation reviews using filters and an authenticated cursor.`,
65966
+ List retained investigation reviews using filters and an authenticated cursor. Optional account_id selects one exact account in this environment before pagination. All filters are bound into the cursor.`,
65913
65967
  annotations: {
65914
65968
  title: "List retained account investigations",
65915
65969
  destructiveHint: false,
@@ -69690,7 +69744,7 @@ endpoint.verification sends a signed challenge now and answers whether the endpo
69690
69744
  function createMCPServer(deps) {
69691
69745
  const server = new McpServer({
69692
69746
  name: "NoResponse",
69693
- version: "0.10.2"
69747
+ version: "0.10.4"
69694
69748
  });
69695
69749
  const getClient = deps.getSDK || (() => new NoResponseCore({
69696
69750
  security: deps.security,
@@ -69956,7 +70010,7 @@ Count this environment's assessments created in [from,to) by UTC hour, or by day
69956
70010
  name: "search_assessments",
69957
70011
  description: `Search assessments across this environment
69958
70012
 
69959
- Search retained assessments created in [from,to), over at most 366 days. Filters use each assessment decision, rather than the current account decision. Results can change between pages. Keep the assessment version to retrieve the exact decision later. Each item's detail.identifiers holds the identifiers its assessment was sent, exactly as received, and first_decision holds the decision of its first answer. email finds every assessment of the accounts that sent a mailbox, matched as lists match it. changed keeps the assessments a later revision changed. total counts every match, exactly up to 10000. This read does not require an idempotency key.`
70013
+ Search retained assessments created in [from,to), at most 366 days. identifier directly matches that assessment's submitted email, phone or customer-namespace username using exact, canonical or explicitly selected email mailbox matching. matched_identifier explains the original value and match basis. Legacy email keeps its account-wide mailbox semantics and cannot be combined with identifier. Other filters combine using AND and describe assessment decisions, separate from current account decisions. Each item carries the original submitted identifiers and its first_decision when available. Newest-created order has an assessment-ID tie break. Results are live across pages; each page's total and items use one database snapshot. Totals are exact below 10000 and capped at 10000. Requires history or investigate authority and identifier-read permission for identifier/email filters; detailed mode also requires detailed permission. No Idempotency-Key.`
69960
70014
  },
69961
70015
  {
69962
70016
  name: "get_assessment_version",
@@ -70056,9 +70110,9 @@ List retained immutable risk decisions for one account with an authenticated cur
70056
70110
  },
70057
70111
  {
70058
70112
  name: "search_accounts",
70059
- description: `Search distinct accounts by email or account ID
70113
+ description: `Search distinct accounts by submitted identifier or account ID
70060
70114
 
70061
- Search distinct accounts observed in retained assessments in this environment. Match an exact account_id or canonical email; an email matches any retained assessment belonging to the account. The response contains one row per account with its newest retained assessment, current decision when available, per-account assessment count, and total distinct-account count. Send next_cursor with unchanged filters to continue. Totals are exact below 10000 and capped at 10000. Results are live across pages. Requires history access and identifier access for email. Read-only and safe to retry.`
70115
+ Search distinct accounts observed in retained assessments in this environment. identifier matches an exact, canonical or explicitly selected mailbox form of a submitted email, phone or customer-namespace username. It matches historical retained inputs and returns matched_identifier with the original value and matching assessment. Each row has its newest retained assessment, current account decision when available, retained assessment count, and total distinct-account count. identifier and legacy email are mutually exclusive; account_id and needs_action combine with either using AND. Set needs_action to select accounts with a retained open or in-progress review, or a current review/block account decision without an effective retained account outcome. This filter applies before counting and pagination and adds waiting_for reasons. Current decisions include account list overrides and shared-key scoring and preserve admission holds. Typed identifier search uses stable opaque account order; ordinary and legacy email searches retain newest-seen order. Results are live across pages; each page's items and total share a database snapshot, while current account risk is read separately. Cursors are expiring and bound to scope, operation and filters. Totals are exact below 10000 and capped at 10000. Requires history or investigate authority and identifier-read permission for identifier or email filtering. needs_action additionally requires management scope. Source-discovered associations are not searched and equality is not verified ownership.`
70062
70116
  },
70063
70117
  {
70064
70118
  name: "list_keys",
@@ -70304,7 +70358,7 @@ Read retained propagation progress for a list change with settings or management
70304
70358
  name: "list_reviews",
70305
70359
  description: `List retained account reviews.
70306
70360
 
70307
- List retained investigation reviews using filters and an authenticated cursor.`
70361
+ List retained investigation reviews using filters and an authenticated cursor. Optional account_id selects one exact account in this environment before pagination. All filters are bound into the cursor.`
70308
70362
  },
70309
70363
  {
70310
70364
  name: "create_review",
@@ -78979,7 +79033,7 @@ var routes = buildRouteMap({
78979
79033
  var app = buildApplication(routes, {
78980
79034
  name: "mcp",
78981
79035
  versionInfo: {
78982
- currentVersion: "0.10.2"
79036
+ currentVersion: "0.10.4"
78983
79037
  }
78984
79038
  });
78985
79039
  run(app, process3.argv.slice(2), buildContext(process3));
@@ -78987,5 +79041,5 @@ export {
78987
79041
  app
78988
79042
  };
78989
79043
 
78990
- //# debugId=A517FA6F5FBFC1C564756E2164756E21
79044
+ //# debugId=5019228518CA43EA64756E2164756E21
78991
79045
  //# sourceMappingURL=mcp-server.js.map