@noresponse/mcp 0.10.1 → 0.10.3

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,41 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.10.3
4
+
5
+ * `SDK.accounts.search()`:
6
+ * `request.needs_action` **Added**
7
+ * `response.items[].waiting_for` **Added**
8
+ * `SDK.reviews.list()`:
9
+ * `request.account_id` **Added**
10
+ * `SDK.reviews.listViews()`: `response.items[].filter.account_id` **Added**
11
+ * `SDK.reviews.createView()`:
12
+ * `request.body.filter.account_id` **Added**
13
+ * `response.filter.account_id` **Added**
14
+ * `SDK.reviews.updateView()`:
15
+ * `request.body.filter.account_id` **Added**
16
+ * `response.filter.account_id` **Added**
17
+
18
+ ## 0.10.2
19
+
20
+ * `SDK.assessments.create()`: `response.account.risk.reasons[].code.enum(no_email_matches)` **Added** (Breaking ⚠️)
21
+ * `SDK.assessments.get()`: `response.account.risk.reasons[].code.enum(no_email_matches)` **Added** (Breaking ⚠️)
22
+ * `SDK.assessments.query()`: `response.items[].risk.reasons[].code.enum(no_email_matches)` **Added** (Breaking ⚠️)
23
+ * `SDK.assessments.aggregate()`:
24
+ * `request.reason.enum(no_email_matches)` **Added**
25
+ * `response.buckets[].groups[].reason.enum(no_email_matches)` **Added** (Breaking ⚠️)
26
+ * `SDK.assessments.search()`:
27
+ * `request.reason.enum(no_email_matches)` **Added**
28
+ * `response.items[].detail.risk.reasons[].code.enum(no_email_matches)` **Added** (Breaking ⚠️)
29
+ * `SDK.assessments.retrieveVersion()`: `response.detail.risk.reasons[].code.enum(no_email_matches)` **Added** (Breaking ⚠️)
30
+ * `SDK.accounts.listChanged()`: `response.items[].risk.reasons[].code.enum(no_email_matches)` **Added** (Breaking ⚠️)
31
+ * `SDK.accounts.get()`: `response.risk.reasons[].code.enum(no_email_matches)` **Added** (Breaking ⚠️)
32
+ * `SDK.accounts.listAssessments()`: `response.items[].risk.reasons[].code.enum(no_email_matches)` **Added** (Breaking ⚠️)
33
+ * `SDK.accounts.retrieveDecision()`: `response.account.risk.reasons[].code.enum(no_email_matches)` **Added** (Breaking ⚠️)
34
+ * `SDK.accounts.export()`: `response.assessments[].detail.risk.reasons[].code.enum(no_email_matches)` **Added** (Breaking ⚠️)
35
+ * `SDK.accounts.listDecisions()`: `response.items[].account.risk.reasons[].code.enum(no_email_matches)` **Added** (Breaking ⚠️)
36
+ * `SDK.accounts.search()`: `response.items[].latest.detail.risk.reasons[].code.enum(no_email_matches)` **Added** (Breaking ⚠️)
37
+ * `SDK.requests.list()`: `response.items[].decision.account.risk.reasons[].code.enum(no_email_matches)` **Added** (Breaking ⚠️)
38
+
3
39
  ## 0.10.1
4
40
 
5
41
  * `SDK.accounts.search()`: **Added**
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.1",
48139
+ sdkVersion: "0.10.3",
48140
48140
  genVersion: "internal",
48141
- userAgent: "noresponse-sdk/mcp-typescript 0.10.1 internal 1 @noresponse/mcp"
48141
+ userAgent: "noresponse-sdk/mcp-typescript 0.10.3 internal 1 @noresponse/mcp"
48142
48142
  };
48143
48143
  });
48144
48144
 
@@ -50336,6 +50336,7 @@ var init_reasoncode = __esm(() => {
50336
50336
  "voip_number",
50337
50337
  "disposable_email",
50338
50338
  "new_email",
50339
+ "no_email_matches",
50339
50340
  "spam_reports",
50340
50341
  "fraud_flag",
50341
50342
  "identity_mismatch",
@@ -50507,7 +50508,7 @@ var init_confidence = __esm(() => {
50507
50508
  "medium",
50508
50509
  "high",
50509
50510
  "unavailable"
50510
- ]).describe("Ordinal confidence in the recommendation under the current policy: low, medium, high or unavailable.");
50511
+ ]).describe("Evidence coverage: how much of the planned source evidence gave a definite answer. This is not confidence that an identity is genuine, agreement between identifiers, a risk score or a probability. unavailable means no usable evidence answered; a terminal uncovered assessment can have this value and recommend review.");
50511
50512
  });
50512
50513
 
50513
50514
  // src/models/incompletereason.ts
@@ -50588,10 +50589,10 @@ var RiskCoverage$zodSchema;
50588
50589
  var init_riskcoverage = __esm(() => {
50589
50590
  init_zod();
50590
50591
  RiskCoverage$zodSchema = object({
50591
- answered: int().describe("Sources that gave a definite answer."),
50592
- failed: int().describe("Sources that could not answer."),
50593
- pending: int().describe("Sources still being asked.")
50594
- }).describe("Sources counted by state, not named.");
50592
+ answered: int().describe("Source-identifier pairs that gave a definite found or not_found answer."),
50593
+ failed: int().describe("Source-identifier pairs that could not answer, including unsupported coverage markers and source failures. Read detailed signals to distinguish Not covered from Failed."),
50594
+ pending: int().describe("Source-identifier pairs with deferred or timed_out evidence. A terminal timeout can remain here after processing finishes; use assessment status and continuation metadata to determine whether work is still running.")
50595
+ }).describe("Counts of planned source-identifier pairs by evidence outcome, deduplicated across signals and incomplete entries. These counts do not measure identity agreement or prove that processing is still running. A lane that was not searched is not an answered source.");
50595
50596
  });
50596
50597
 
50597
50598
  // src/models/breachexposed.ts
@@ -51004,7 +51005,7 @@ var init_risk = __esm(() => {
51004
51005
  block: boolean2().optional().describe("true when the workspace's block threshold is set and score reached it. A provider hook can deny the account creation on it; the provider decides and enforces. It does not change recommendation. It is false while blocking is off, the default, and a body from before the flag existed omits it: read absent as false."),
51005
51006
  block_threshold: int().optional().describe("The block threshold this answer used: block is true exactly when score is at least this value. Absent while blocking is off. NoResponse sets it per workspace on request, at or above the review threshold."),
51006
51007
  confidence: RiskConfidence$zodSchema.describe("How much of the planned evidence answered; it says nothing about risk."),
51007
- coverage: RiskCoverage$zodSchema.describe("Sources counted by state, not named."),
51008
+ coverage: RiskCoverage$zodSchema.describe("Counts of planned source-identifier pairs by evidence outcome, deduplicated across signals and incomplete entries. These counts do not measure identity agreement or prove that processing is still running. A lane that was not searched is not an answered source."),
51008
51009
  details: RiskDetails$zodSchema.optional().describe("Detailed view only (response_mode=detailed, which needs the detailed scope); a standard answer leaves it out. Merged observations without provider, source, origin, raw breach record, value or score."),
51009
51010
  policy_basis: literal("heuristic_unvalidated").default("heuristic_unvalidated").optional().describe("Labels the v0 policy as hand-authored and not statistically validated."),
51010
51011
  policy_version: string2().describe("Version of the hand-authored heuristic policy that produced the recommendation, for example 'risk-2026-10.7'. A workspace threshold override adds a +t<N> suffix, e.g. 'risk-2026-10.7+t3'."),
@@ -51260,7 +51261,7 @@ var init_status = __esm(() => {
51260
51261
  "complete",
51261
51262
  "partial",
51262
51263
  "pending"
51263
- ]).describe("complete: final; nothing is still running. A lane that failed or missed its 10 s deadline stays listed in incomplete_sources, and confidence is lower. partial: a recommendation exists and at least one lane is still running or did not settle (see incomplete_sources). pending: nothing usable before the deadline; no recommendation yet, poll or wait for the webhook.");
51264
+ ]).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.");
51264
51265
  });
51265
51266
 
51266
51267
  // src/models/assessmentdetail.ts
@@ -51282,7 +51283,7 @@ var init_assessmentdetail = __esm(() => {
51282
51283
  assessment_url: string2().optional().describe("Server-relative path of the authoritative assessment, GET /v1/assessments/{assessment_id}."),
51283
51284
  assessment_version: int().describe("Monotonic revision of this assessment. 1 on the synchronous answer; each material change while the assessment is served (an async continuation settling a source, a change of recommendation, confidence or status) increments it. Expiry does not increment it: an expired assessment is gone, not revised, and the expiry webhook carries the last served version."),
51284
51285
  auth_context: AssessmentDetailAuthContext$zodSchema.optional().describe("The identity fields of the auth context the assessment was made with, echoed for the workspace's own correlation: the request's auth_context, or the one a hosted provider hook (POST /hooks/{integration_id}) built, with transport provider_hook and its hook_point. Present exactly when the request carried an auth_context, and the same on every revision of the assessment. Values are as the request or the hook sent them; tokens, timestamps, roles and scopes are not echoed, and the echo does not change the score."),
51285
- confidence: Confidence$zodSchema.describe("Ordinal confidence in the recommendation under the current policy: low, medium, high or unavailable."),
51286
+ confidence: Confidence$zodSchema.describe("Evidence coverage: how much of the planned source evidence gave a definite answer. This is not confidence that an identity is genuine, agreement between identifiers, a risk score or a probability. unavailable means no usable evidence answered; a terminal uncovered assessment can have this value and recommend review."),
51286
51287
  created_at: string2().describe("When the assessment was created. Fixed for the life of the assessment: every revision carries the same created_at."),
51287
51288
  expires_at: string2().describe("After this instant the assessment is no longer served: GET /v1/assessments/{assessment_id} answers 404 and it leaves the account history. It is created_at plus your retention period at creation (default and maximum 365 days) and is fixed per record: a later revision keeps it, and a new assessment for the same account starts its own clock. If you later shorten retention, the effective expiry becomes created_at plus the shorter of the two periods."),
51288
51289
  identifiers: SentIdentifiers$zodSchema.optional().describe("The identifiers an assessment was sent: each member of the request's identifiers object exactly as received, before the server normalised it (the email domain keeps its case, the name its Unicode form). A member the request did not send is absent. NoResponse keeps them encrypted under the workspace's own key, does not index or log them, and deletes them with the assessment: on DELETE of the assessment or its account, at its expires_at, and with the workspace."),
@@ -51294,7 +51295,7 @@ var init_assessmentdetail = __esm(() => {
51294
51295
  risk: Risk$zodSchema.optional().describe("The one risk decision for this event. score is 0 (safe) to 100 (risky), set by the reasons that fired under a hand-set, versioned heuristic policy. Each reason carries its direction and impact band; the policy's weights are not published. Every answer with a recommendation carries it, and the top-level recommendation equals risk.recommendation. It names no source or provider."),
51295
51296
  schema_version: literal("1").default("1").optional().describe("Version of the body shape."),
51296
51297
  signals: array(Signal$zodSchema).optional().describe("Detailed view only (response_mode=detailed, which needs the detailed scope): a standard answer omits signals[], and a detailed one always carries it, possibly empty. The body does not name its mode, so that rule is the serving gate's; the schema states the half it can: an answer with risk.details is a detailed view and carries signals[]. At most one signal per (type, source_id, identifier)."),
51297
- status: Status$zodSchema.describe("complete: final; nothing is still running. A lane that failed or missed its 10 s deadline stays listed in incomplete_sources, and confidence is lower. partial: a recommendation exists and at least one lane is still running or did not settle (see incomplete_sources). pending: nothing usable before the deadline; no recommendation yet, poll or wait for the webhook."),
51298
+ status: Status$zodSchema.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."),
51298
51299
  timing: AssessmentDetailTiming$zodSchema,
51299
51300
  updated_at: string2()
51300
51301
  }).describe("One assessment's own facts: its score and recommendation, the signals behind them, the lanes still running and its timing. risk here is this assessment's own score; the account's current risk is the account member of the assessment. risk and recommendation are present for complete and partial; assessment_url is present for pending.");
@@ -51337,7 +51338,7 @@ var init_assessment = __esm(() => {
51337
51338
  flow: Flow$zodSchema.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."),
51338
51339
  id: string2().describe("This assessment's id, equal to detail.assessment_id."),
51339
51340
  schema_version: literal("1").default("1").optional().describe("Version of the body shape."),
51340
- status: Status$zodSchema.describe("complete: final; nothing is still running. A lane that failed or missed its 10 s deadline stays listed in incomplete_sources, and confidence is lower. partial: a recommendation exists and at least one lane is still running or did not settle (see incomplete_sources). pending: nothing usable before the deadline; no recommendation yet, poll or wait for the webhook.")
51341
+ status: Status$zodSchema.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.")
51341
51342
  }).describe("One assessment, as POST /v1/assessments, GET /v1/assessments/{assessment_id} and the assessment.updated webhook return it. account is the account's one current risk: its score, the decision for this assessment's flow, the reasons and the decision for each flow. detail holds this assessment's own facts. status says whether the assessment is final (complete), usable with a source still running (partial) or not yet usable (pending). While the account's first assessment is pending, account is absent; wait for the webhook or poll the assessment. Keep the highest detail.assessment_version.");
51342
51343
  });
51343
51344
 
@@ -52621,7 +52622,7 @@ var init_assessmentrevision = __esm(() => {
52621
52622
  flow: Flow$zodSchema.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."),
52622
52623
  id: string2().describe("This assessment's id, equal to detail.assessment_id."),
52623
52624
  schema_version: literal("1").default("1").optional().describe("Version of the body shape."),
52624
- status: Status$zodSchema.describe("complete: final; nothing is still running. A lane that failed or missed its 10 s deadline stays listed in incomplete_sources, and confidence is lower. partial: a recommendation exists and at least one lane is still running or did not settle (see incomplete_sources). pending: nothing usable before the deadline; no recommendation yet, poll or wait for the webhook.")
52625
+ status: Status$zodSchema.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.")
52625
52626
  }).describe("Retrieve a retained assessment version with its original decision, policy, flow and depth. This response excludes the current account decision. Current retention and response-mode permissions still apply.");
52626
52627
  });
52627
52628
 
@@ -52727,7 +52728,7 @@ var init_decisionreceipt = __esm(() => {
52727
52728
  flow: Flow$zodSchema.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."),
52728
52729
  policy_version: string2().optional().describe("Version of the hand-authored heuristic policy that produced the recommendation, for example 'risk-2026-10.7'. A workspace threshold override adds a +t<N> suffix, e.g. 'risk-2026-10.7+t3'."),
52729
52730
  score: int().optional(),
52730
- status: Status$zodSchema.describe("complete: final; nothing is still running. A lane that failed or missed its 10 s deadline stays listed in incomplete_sources, and confidence is lower. partial: a recommendation exists and at least one lane is still running or did not settle (see incomplete_sources). pending: nothing usable before the deadline; no recommendation yet, poll or wait for the webhook.")
52731
+ status: Status$zodSchema.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.")
52731
52732
  }).describe("The decision prepared for one HTTP attempt. Its account field preserves the account decision returned for that attempt, even after subsequent changes.");
52732
52733
  });
52733
52734
 
@@ -54855,7 +54856,8 @@ var init_accountdirectorysearchrequest = __esm(() => {
54855
54856
  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."),
54856
54857
  cursor: string2().optional().describe("Opaque, expiring cursor bound to this environment, operation and every filter. Keep the filters unchanged."),
54857
54858
  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."),
54858
- limit: int().default(25)
54859
+ limit: int().default(25),
54860
+ 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.")
54859
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.");
54860
54862
  });
54861
54863
 
@@ -54952,7 +54954,7 @@ var init_accountsSearch2 = __esm(() => {
54952
54954
  name: "search_accounts",
54953
54955
  description: `Search distinct accounts by email or account ID
54954
54956
 
54955
- 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.`,
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.`,
54956
54958
  annotations: {
54957
54959
  title: "Search retained accounts by identifier",
54958
54960
  destructiveHint: false,
@@ -55088,7 +55090,7 @@ var init_assessmentaggregaterequest = __esm(() => {
55088
55090
  revision: AnswerRevision$zodSchema.optional().describe("Which answer of each assessment the filters describe: latest, the latest stored revision, or first, the first answer, as served when the assessment was first answered (POST /v1/assessments/aggregate counts first answers). A cell of an aggregate drills down to POST /v1/assessments/search with the same filters, revision first and the cell's bucket as from and to."),
55089
55091
  score_max: int().optional().describe("Inclusive upper score bound, at least score_min when both are supplied."),
55090
55092
  score_min: int().optional().describe("Inclusive lower score bound. Pending answers without a score do not match."),
55091
- status: Status$zodSchema.optional().describe("complete: final; nothing is still running. A lane that failed or missed its 10 s deadline stays listed in incomplete_sources, and confidence is lower. partial: a recommendation exists and at least one lane is still running or did not settle (see incomplete_sources). pending: nothing usable before the deadline; no recommendation yet, poll or wait for the webhook."),
55093
+ 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."),
55092
55094
  time_zone: string2().default("UTC").describe("The IANA time zone whose local midnight starts each day and week bucket, such as Europe/London or Asia/Kolkata; daylight saving changes make those days 23 or 25 hours long. A name the zone database does not know is refused (400 invalid_request naming time_zone). Day and week buckets in a zone other than UTC cover at most 92 days (400 invalid_request naming to); a year of them reads too many hourly counts to answer in time. Hour buckets stay whole UTC hours. Bucket starts, from and to stay instants. With the default population, a zone whose local midnight falls inside a UTC hour (a half-hour offset such as Asia/Kolkata) is refused for day and week buckets, as those counts are kept by the hour; retained_first_answers counts it."),
55093
55095
  to: string2().describe("The end, excluded: the start of the bucket after the last.")
55094
55096
  }).describe("Count this environment's assessments created in [from,to) by bucket, from counts kept as each assessment is first answered, not by scanning assessments. Each assessment counts once, by its first answer (the answer served when it was first answered); later revisions and late results do not count it again, and late_flips counts its later account decision changes. from and to start a bucket (an hour, or a day or a week from Monday that starts at midnight in time_zone, UTC by default), cover at most 366 days (31 for hour buckets, 92 for day and week buckets in a time_zone other than UTC) and from is inside the retention period. The filters are POST /v1/assessments/search's and describe the first answer, so a cell drills down to search with the same filters, revision first and the cell's bucket as from and to. Counts hold no identifier and stay when an assessment or account is deleted or erased; they expire with retention and go with the workspace. Reasons are counted by code and impact band, not by weight. No Idempotency-Key. Select retained_first_answers for exact facet filters and pairs over retained detail. This mode supports count, score_histogram and score_outcomes, and refuses late_flips. It has a 31-day and 100000-record work budget.");
@@ -56417,7 +56419,7 @@ var init_assessmentsearchrequest = __esm(() => {
56417
56419
  revision: AnswerRevision$zodSchema.optional().describe("Which answer of each assessment the filters describe: latest, the latest stored revision, or first, the first answer, as served when the assessment was first answered (POST /v1/assessments/aggregate counts first answers). A cell of an aggregate drills down to POST /v1/assessments/search with the same filters, revision first and the cell's bucket as from and to."),
56418
56420
  score_max: int().optional().describe("Inclusive upper score bound, at least score_min when both are supplied."),
56419
56421
  score_min: int().optional().describe("Inclusive lower score bound. Pending answers without a score do not match."),
56420
- status: Status$zodSchema.optional().describe("complete: final; nothing is still running. A lane that failed or missed its 10 s deadline stays listed in incomplete_sources, and confidence is lower. partial: a recommendation exists and at least one lane is still running or did not settle (see incomplete_sources). pending: nothing usable before the deadline; no recommendation yet, poll or wait for the webhook."),
56422
+ 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."),
56421
56423
  to: string2()
56422
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.");
56423
56425
  });
@@ -64827,6 +64829,7 @@ var init_filter = __esm(() => {
64827
64829
  init_priority();
64828
64830
  init_reviewstatus();
64829
64831
  Filter$zodSchema = object({
64832
+ account_id: string2().optional().describe("Only reviews of this exact account in the authenticated workspace and environment. Applied before pagination."),
64830
64833
  assignee: string2().optional(),
64831
64834
  assignee_principal_id: string2().optional(),
64832
64835
  priority: Priority$zodSchema.optional(),
@@ -65763,6 +65766,7 @@ var init_listreviewsop = __esm(() => {
65763
65766
  init_reviewlist();
65764
65767
  init_reviewstatus();
65765
65768
  ListReviewsRequest$zodSchema = object({
65769
+ 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(),
65766
65770
  assignee: string2().optional(),
65767
65771
  assignee_principal_id: string2().describe("Filter by immutable member ID. Mutually exclusive with assignee and unassigned=true.").optional(),
65768
65772
  cursor: string2().optional(),
@@ -65819,6 +65823,7 @@ async function $do73(client$, request, options) {
65819
65823
  };
65820
65824
  const path$ = pathToFunc("/v1/workspaces/{workspace_id}/reviews/{environment}")(pathParams$);
65821
65825
  const query$ = encodeFormQuery({
65826
+ account_id: payload$.account_id,
65822
65827
  assignee: payload$.assignee,
65823
65828
  assignee_principal_id: payload$.assignee_principal_id,
65824
65829
  cursor: payload$.cursor,
@@ -65908,7 +65913,7 @@ var init_reviewsList2 = __esm(() => {
65908
65913
  name: "list_reviews",
65909
65914
  description: `List retained account reviews.
65910
65915
 
65911
- List retained investigation reviews using filters and an authenticated cursor.`,
65916
+ 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.`,
65912
65917
  annotations: {
65913
65918
  title: "List retained account investigations",
65914
65919
  destructiveHint: false,
@@ -69689,7 +69694,7 @@ endpoint.verification sends a signed challenge now and answers whether the endpo
69689
69694
  function createMCPServer(deps) {
69690
69695
  const server = new McpServer({
69691
69696
  name: "NoResponse",
69692
- version: "0.10.1"
69697
+ version: "0.10.3"
69693
69698
  });
69694
69699
  const getClient = deps.getSDK || (() => new NoResponseCore({
69695
69700
  security: deps.security,
@@ -70057,7 +70062,7 @@ List retained immutable risk decisions for one account with an authenticated cur
70057
70062
  name: "search_accounts",
70058
70063
  description: `Search distinct accounts by email or account ID
70059
70064
 
70060
- 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.`
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.`
70061
70066
  },
70062
70067
  {
70063
70068
  name: "list_keys",
@@ -70303,7 +70308,7 @@ Read retained propagation progress for a list change with settings or management
70303
70308
  name: "list_reviews",
70304
70309
  description: `List retained account reviews.
70305
70310
 
70306
- List retained investigation reviews using filters and an authenticated cursor.`
70311
+ 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.`
70307
70312
  },
70308
70313
  {
70309
70314
  name: "create_review",
@@ -78978,7 +78983,7 @@ var routes = buildRouteMap({
78978
78983
  var app = buildApplication(routes, {
78979
78984
  name: "mcp",
78980
78985
  versionInfo: {
78981
- currentVersion: "0.10.1"
78986
+ currentVersion: "0.10.3"
78982
78987
  }
78983
78988
  });
78984
78989
  run(app, process3.argv.slice(2), buildContext(process3));
@@ -78986,5 +78991,5 @@ export {
78986
78991
  app
78987
78992
  };
78988
78993
 
78989
- //# debugId=6460302CA8544A4964756E2164756E21
78994
+ //# debugId=16531E01D8A2C65564756E2164756E21
78990
78995
  //# sourceMappingURL=mcp-server.js.map