@noresponse/mcp 0.10.3 → 0.11.0

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,23 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.11.0
4
+
5
+ * `SDK.assessments.search()`:
6
+ * `request.identifier_expression` **Added**
7
+ * `response.items[].matched_identifiers` **Added**
8
+ * `SDK.accounts.search()`:
9
+ * `request.identifier_expression` **Added**
10
+ * `response.items[].matched_identifiers` **Added**
11
+
12
+ ## 0.10.4
13
+
14
+ * `SDK.assessments.search()`:
15
+ * `request.identifier` **Added**
16
+ * `response.items[].matched_identifier` **Added**
17
+ * `SDK.accounts.search()`:
18
+ * `request.identifier` **Added**
19
+ * `response.items[].matched_identifier` **Added**
20
+
3
21
  ## 0.10.3
4
22
 
5
23
  * `SDK.accounts.search()`:
package/README.md CHANGED
@@ -87,3 +87,21 @@ Each [release](https://github.com/noresponsehq/mcp/releases) attaches `norespons
87
87
  ## Licence
88
88
 
89
89
  Apache-2.0. See [LICENSE](LICENSE).
90
+
91
+
92
+ ## Combine submitted identifiers
93
+
94
+ Search accounts and assessments with explicit AND/OR combinations of submitted
95
+ email, phone and customer-namespace username terms. Use `IdentifierExpression`
96
+ and its required `scope`: `assessment` requires one submission to satisfy the
97
+ whole expression; `account` can combine different retained submissions of the
98
+ same account and is accepted only by account search. Pass the wire shape under `request.identifier_expression` to `search_accounts` or `search_assessments`.
99
+
100
+ Expressions have at most eight raw terms and three group levels. The original
101
+ exact, canonical and explicit mailbox matching rules still apply to each term.
102
+ Expression results contain indexed `IdentifierTermMatch` records with the
103
+ original submitted value and originating assessment, separate from current
104
+ account risk. Single-identifier and legacy email filters retain their behavior.
105
+
106
+ See the [combined-search contract and examples](https://docs.noresponse.org/reference/investigation#combine-submitted-identifiers)
107
+ for the expression shape, scope differences, permissions and pagination.
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.3",
48139
+ sdkVersion: "0.11.0",
48140
48140
  genVersion: "internal",
48141
- userAgent: "noresponse-sdk/mcp-typescript 0.10.3 internal 1 @noresponse/mcp"
48141
+ userAgent: "noresponse-sdk/mcp-typescript 0.11.0 internal 1 @noresponse/mcp"
48142
48142
  };
48143
48143
  });
48144
48144
 
@@ -54848,17 +54848,138 @@ 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
+
54897
+ // src/models/identifierexpressionleaf.ts
54898
+ var IdentifierExpressionLeaf$zodSchema;
54899
+ var init_identifierexpressionleaf = __esm(() => {
54900
+ init_zod();
54901
+ init_identifiersearch();
54902
+ IdentifierExpressionLeaf$zodSchema = object({
54903
+ term: IdentifierSearch$zodSchema.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.")
54904
+ });
54905
+ });
54906
+
54907
+ // src/models/identifierexpressionnodelevelone.ts
54908
+ var IdentifierExpressionNodeLevelOne$zodSchema;
54909
+ var init_identifierexpressionnodelevelone = __esm(() => {
54910
+ init_zod();
54911
+ init_identifierexpressionleaf();
54912
+ init_identifiersearch();
54913
+ IdentifierExpressionNodeLevelOne$zodSchema = object({
54914
+ and: array(IdentifierExpressionLeaf$zodSchema).optional(),
54915
+ or: array(IdentifierExpressionLeaf$zodSchema).optional(),
54916
+ term: 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.")
54917
+ });
54918
+ });
54919
+
54920
+ // src/models/identifierexpressionnodeleveltwo.ts
54921
+ var IdentifierExpressionNodeLevelTwo$zodSchema;
54922
+ var init_identifierexpressionnodeleveltwo = __esm(() => {
54923
+ init_zod();
54924
+ init_identifierexpressionnodelevelone();
54925
+ init_identifiersearch();
54926
+ IdentifierExpressionNodeLevelTwo$zodSchema = object({
54927
+ and: array(IdentifierExpressionNodeLevelOne$zodSchema).optional(),
54928
+ or: array(IdentifierExpressionNodeLevelOne$zodSchema).optional(),
54929
+ term: 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.")
54930
+ });
54931
+ });
54932
+
54933
+ // src/models/identifierexpressionnode.ts
54934
+ var IdentifierExpressionNode$zodSchema;
54935
+ var init_identifierexpressionnode = __esm(() => {
54936
+ init_zod();
54937
+ init_identifierexpressionnodeleveltwo();
54938
+ init_identifiersearch();
54939
+ IdentifierExpressionNode$zodSchema = object({
54940
+ and: array(IdentifierExpressionNodeLevelTwo$zodSchema).optional(),
54941
+ or: array(IdentifierExpressionNodeLevelTwo$zodSchema).optional(),
54942
+ term: 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.")
54943
+ });
54944
+ });
54945
+
54946
+ // src/models/scopeenum.ts
54947
+ var ScopeEnum$zodSchema;
54948
+ var init_scopeenum = __esm(() => {
54949
+ init_zod();
54950
+ ScopeEnum$zodSchema = _enum([
54951
+ "assessment",
54952
+ "account"
54953
+ ]).describe("assessment requires one submission to satisfy the complete expression. account permits witnesses across retained submissions of one account and is supported only by POST /v1/accounts/search. No default: select scope explicitly.");
54954
+ });
54955
+
54956
+ // src/models/identifierexpression.ts
54957
+ var IdentifierExpression$zodSchema;
54958
+ var init_identifierexpression = __esm(() => {
54959
+ init_zod();
54960
+ init_identifierexpressionnode();
54961
+ init_scopeenum();
54962
+ IdentifierExpression$zodSchema = object({
54963
+ expression: IdentifierExpressionNode$zodSchema,
54964
+ scope: ScopeEnum$zodSchema.describe("assessment requires one submission to satisfy the complete expression. account permits witnesses across retained submissions of one account and is supported only by POST /v1/accounts/search. No default: select scope explicitly.")
54965
+ }).describe("A bounded AND/OR expression over submitted identifiers. Required scope assessment means the entire expression must match one retained assessment. Scope account permits each term to match a different retained assessment of the same account and is accepted only by account search. Exactly one of term, and or or is allowed at every node. Groups contain 2 to 8 operands, with at most 3 nested group levels and 8 raw term occurrences over the entire expression. A root term is allowed. Duplicate terms with the same kind, match rule, namespace and normalized comparison are idempotent, but count toward the raw limit. Match rules default to exact and preserve the existing identifier contract. Only retained submitted identifiers can satisfy a term. Unknown fields, unsupported scopes and malformed or oversized expressions return 400 invalid_request.");
54966
+ });
54967
+
54851
54968
  // src/models/accountdirectorysearchrequest.ts
54852
54969
  var AccountDirectorySearchRequest$zodSchema;
54853
54970
  var init_accountdirectorysearchrequest = __esm(() => {
54854
54971
  init_zod();
54972
+ init_identifierexpression();
54973
+ init_identifiersearch();
54855
54974
  AccountDirectorySearchRequest$zodSchema = object({
54856
54975
  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
- cursor: string2().optional().describe("Opaque, expiring cursor bound to this environment, operation and every filter. Keep the filters unchanged."),
54976
+ cursor: string2().optional().describe("Opaque, expiring cursor bound to workspace, environment, operation and all filters, including expression scope, ordered structure and original term values. Keep grouping, operand order, matching modes and values unchanged; an omitted match is equivalent to exact. The page limit may change."),
54858
54977
  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."),
54978
+ 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."),
54979
+ identifier_expression: IdentifierExpression$zodSchema.optional().describe("A bounded AND/OR expression over submitted identifiers. Required scope assessment means the entire expression must match one retained assessment. Scope account permits each term to match a different retained assessment of the same account and is accepted only by account search. Exactly one of term, and or or is allowed at every node. Groups contain 2 to 8 operands, with at most 3 nested group levels and 8 raw term occurrences over the entire expression. A root term is allowed. Duplicate terms with the same kind, match rule, namespace and normalized comparison are idempotent, but count toward the raw limit. Match rules default to exact and preserve the existing identifier contract. Only retained submitted identifiers can satisfy a term. Unknown fields, unsupported scopes and malformed or oversized expressions return 400 invalid_request."),
54859
54980
  limit: int().default(25),
54860
54981
  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.")
54861
- }).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.");
54982
+ }).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, identifier_expression or email filtering. identifier_expression explicitly chooses scope assessment (one whole matching submission) or account (terms may match different retained submissions of one account). At most 8 raw terms and 3 group levels. Mutually exclusive with identifier and email. Expression search uses the same stable opaque account order as typed identifier search.");
54862
54983
  });
54863
54984
 
54864
54985
  // src/funcs/accountsSearch.ts
@@ -54952,9 +55073,9 @@ var init_accountsSearch2 = __esm(() => {
54952
55073
  };
54953
55074
  tool$accountsSearch = {
54954
55075
  name: "search_accounts",
54955
- description: `Search distinct accounts by email or account ID
55076
+ description: `Search distinct accounts by submitted identifier or account ID
54956
55077
 
54957
- 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. Set needs_action to select accounts with an open or in-progress retained review, or a current review/block decision without an effective retained outcome. This filter applies before pagination and counting, adds waiting_for reasons to each row and requires management scope as well as history or investigate access. 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.`,
55078
+ 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, identifier_expression or email filtering. needs_action additionally requires management scope. Source-discovered associations are not searched and equality is not verified ownership. identifier_expression combines submitted terms with bounded AND/OR, at most 8 raw terms and 3 group levels. Each node selects exactly one of term, and, or. Groups have 2 to 8 operands. Duplicate normalized terms are idempotent and still count toward the limit. identifier_expression, identifier and email are mutually exclusive. Expression results use matched_identifiers with original submitted witnesses and zero-based depth-first term_index. All satisfied unique terms are returned in first-occurrence order. Cursors bind scope, ordered structure, original values, matching modes and all other filters; changing only page limit is allowed. Required expression scope assessment evaluates the whole expression in one retained submission; scope account allows different retained submissions of the same account to satisfy different terms. Both use stable opaque account ordering and distinct-account counting before pagination.`,
54958
55079
  annotations: {
54959
55080
  title: "Search retained accounts by identifier",
54960
55081
  destructiveHint: false,
@@ -56391,6 +56512,8 @@ var init_assessmentsearchrequest = __esm(() => {
56391
56512
  init_band();
56392
56513
  init_decision();
56393
56514
  init_flow();
56515
+ init_identifierexpression();
56516
+ init_identifiersearch();
56394
56517
  init_impact();
56395
56518
  init_lane();
56396
56519
  init_listmatch();
@@ -56404,11 +56527,13 @@ var init_assessmentsearchrequest = __esm(() => {
56404
56527
  band: Band$zodSchema.optional(),
56405
56528
  changed: boolean2().optional().describe("true returns only assessments whose latest stored revision's decision differs from their first answer's decision (see decision); false only the others. An assessment whose first answer or latest revision has no decision yet is not changed. Cannot be combined with revision first."),
56406
56529
  country: string2().optional(),
56407
- cursor: string2().optional().describe("Opaque, expiring cursor bound to this environment, operation and every filter. Keep the filters unchanged."),
56530
+ cursor: string2().optional().describe("Opaque, expiring cursor bound to workspace, environment, operation and all filters, including expression scope, ordered structure and original term values. Keep grouping, operand order, matching modes and values unchanged; an omitted match is equivalent to exact. The page limit may change."),
56408
56531
  decision: Decision$zodSchema.optional().describe("An assessment's own decision: block when its stored risk.block is true, otherwise its recommendation. It is not the account's decision or held-admission state."),
56409
56532
  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."),
56410
56533
  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."),
56411
56534
  from: string2(),
56535
+ 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."),
56536
+ identifier_expression: IdentifierExpression$zodSchema.optional().describe("A bounded AND/OR expression over submitted identifiers. Required scope assessment means the entire expression must match one retained assessment. Scope account permits each term to match a different retained assessment of the same account and is accepted only by account search. Exactly one of term, and or or is allowed at every node. Groups contain 2 to 8 operands, with at most 3 nested group levels and 8 raw term occurrences over the entire expression. A root term is allowed. Duplicate terms with the same kind, match rule, namespace and normalized comparison are idempotent, but count toward the raw limit. Match rules default to exact and preserve the existing identifier contract. Only retained submitted identifiers can satisfy a term. Unknown fields, unsupported scopes and malformed or oversized expressions return 400 invalid_request."),
56412
56537
  impact: Impact$zodSchema.optional().describe("The selected reason's served impact band. Requires reason."),
56413
56538
  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."),
56414
56539
  limit: int().default(20),
@@ -56421,7 +56546,7 @@ var init_assessmentsearchrequest = __esm(() => {
56421
56546
  score_min: int().optional().describe("Inclusive lower score bound. Pending answers without a score do not match."),
56422
56547
  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."),
56423
56548
  to: string2()
56424
- }).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.");
56549
+ }).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, identifier_expression and email filtering also require identifier-read permission. Detailed response mode additionally requires detailed permission. No Idempotency-Key. identifier_expression requires scope assessment and matches the complete expression within each returned submission; account scope returns 400 invalid_request. At most 8 raw terms and 3 group levels. Mutually exclusive with identifier and email.");
56425
56550
  });
56426
56551
 
56427
56552
  // src/funcs/assessmentsSearch.ts
@@ -56517,7 +56642,7 @@ var init_assessmentsSearch2 = __esm(() => {
56517
56642
  name: "search_assessments",
56518
56643
  description: `Search assessments across this environment
56519
56644
 
56520
- 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.`,
56645
+ 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, identifier_expression or email filters; detailed mode also requires detailed permission. No Idempotency-Key. identifier_expression combines submitted terms with bounded AND/OR, at most 8 raw terms and 3 group levels. Each node selects exactly one of term, and, or. Groups have 2 to 8 operands. Duplicate normalized terms are idempotent and still count toward the limit. identifier_expression, identifier and email are mutually exclusive. Expression results use matched_identifiers with original submitted witnesses and zero-based depth-first term_index. All satisfied unique terms are returned in first-occurrence order. Cursors bind scope, ordered structure, original values, matching modes and all other filters; changing only page limit is allowed. Expression scope must be assessment: each returned assessment itself satisfies the complete expression. Scope account is rejected with 400 invalid_request; use account search for historical combinations.`,
56521
56646
  annotations: {
56522
56647
  title: "Search assessments in this environment",
56523
56648
  destructiveHint: false,
@@ -69694,7 +69819,7 @@ endpoint.verification sends a signed challenge now and answers whether the endpo
69694
69819
  function createMCPServer(deps) {
69695
69820
  const server = new McpServer({
69696
69821
  name: "NoResponse",
69697
- version: "0.10.3"
69822
+ version: "0.11.0"
69698
69823
  });
69699
69824
  const getClient = deps.getSDK || (() => new NoResponseCore({
69700
69825
  security: deps.security,
@@ -69960,7 +70085,7 @@ Count this environment's assessments created in [from,to) by UTC hour, or by day
69960
70085
  name: "search_assessments",
69961
70086
  description: `Search assessments across this environment
69962
70087
 
69963
- 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.`
70088
+ 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, identifier_expression or email filters; detailed mode also requires detailed permission. No Idempotency-Key. identifier_expression combines submitted terms with bounded AND/OR, at most 8 raw terms and 3 group levels. Each node selects exactly one of term, and, or. Groups have 2 to 8 operands. Duplicate normalized terms are idempotent and still count toward the limit. identifier_expression, identifier and email are mutually exclusive. Expression results use matched_identifiers with original submitted witnesses and zero-based depth-first term_index. All satisfied unique terms are returned in first-occurrence order. Cursors bind scope, ordered structure, original values, matching modes and all other filters; changing only page limit is allowed. Expression scope must be assessment: each returned assessment itself satisfies the complete expression. Scope account is rejected with 400 invalid_request; use account search for historical combinations.`
69964
70089
  },
69965
70090
  {
69966
70091
  name: "get_assessment_version",
@@ -70060,9 +70185,9 @@ List retained immutable risk decisions for one account with an authenticated cur
70060
70185
  },
70061
70186
  {
70062
70187
  name: "search_accounts",
70063
- description: `Search distinct accounts by email or account ID
70188
+ description: `Search distinct accounts by submitted identifier or account ID
70064
70189
 
70065
- 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. Set needs_action to select accounts with an open or in-progress retained review, or a current review/block decision without an effective retained outcome. This filter applies before pagination and counting, adds waiting_for reasons to each row and requires management scope as well as history or investigate access. 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.`
70190
+ 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, identifier_expression or email filtering. needs_action additionally requires management scope. Source-discovered associations are not searched and equality is not verified ownership. identifier_expression combines submitted terms with bounded AND/OR, at most 8 raw terms and 3 group levels. Each node selects exactly one of term, and, or. Groups have 2 to 8 operands. Duplicate normalized terms are idempotent and still count toward the limit. identifier_expression, identifier and email are mutually exclusive. Expression results use matched_identifiers with original submitted witnesses and zero-based depth-first term_index. All satisfied unique terms are returned in first-occurrence order. Cursors bind scope, ordered structure, original values, matching modes and all other filters; changing only page limit is allowed. Required expression scope assessment evaluates the whole expression in one retained submission; scope account allows different retained submissions of the same account to satisfy different terms. Both use stable opaque account ordering and distinct-account counting before pagination.`
70066
70191
  },
70067
70192
  {
70068
70193
  name: "list_keys",
@@ -78983,7 +79108,7 @@ var routes = buildRouteMap({
78983
79108
  var app = buildApplication(routes, {
78984
79109
  name: "mcp",
78985
79110
  versionInfo: {
78986
- currentVersion: "0.10.3"
79111
+ currentVersion: "0.11.0"
78987
79112
  }
78988
79113
  });
78989
79114
  run(app, process3.argv.slice(2), buildContext(process3));
@@ -78991,5 +79116,5 @@ export {
78991
79116
  app
78992
79117
  };
78993
79118
 
78994
- //# debugId=16531E01D8A2C65564756E2164756E21
79119
+ //# debugId=4776654EE2410C3964756E2164756E21
78995
79120
  //# sourceMappingURL=mcp-server.js.map