@noresponse/mcp 0.6.12 → 0.6.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.6.13
4
+
5
+ * `SDK.assessments.create()`: `response.detail.identifiers` **Added**
6
+ * `SDK.assessments.get()`: `response.detail.identifiers` **Added**
7
+ * `SDK.assessments.query()`: `response.items[].identifiers` **Added**
8
+ * `SDK.assessments.search()`: `response.items[].detail.identifiers` **Added**
9
+ * `SDK.assessments.retrieveVersion()`: `response.detail.identifiers` **Added**
10
+ * `SDK.accounts.listAssessments()`: `response.items[].identifiers` **Added**
11
+ * `SDK.accounts.export()`: `response.assessments[].detail.identifiers` **Added**
12
+
3
13
  ## 0.6.12
4
14
 
5
15
  * `SDK.webhookEndpoints.list()`: `response.code` **Changed** (Breaking ⚠️)
package/bin/mcp-server.js CHANGED
@@ -48117,9 +48117,9 @@ var init_config = __esm(() => {
48117
48117
  SDK_METADATA = {
48118
48118
  language: "typescript",
48119
48119
  openapiDocVersion: "1",
48120
- sdkVersion: "0.6.12",
48120
+ sdkVersion: "0.6.13",
48121
48121
  genVersion: "internal",
48122
- userAgent: "noresponse-sdk/mcp-typescript 0.6.12 internal 1 @noresponse/mcp"
48122
+ userAgent: "noresponse-sdk/mcp-typescript 0.6.13 internal 1 @noresponse/mcp"
48123
48123
  };
48124
48124
  });
48125
48125
 
@@ -50994,6 +50994,19 @@ var init_risk = __esm(() => {
50994
50994
  }).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.");
50995
50995
  });
50996
50996
 
50997
+ // src/models/sentidentifiers.ts
50998
+ var SentIdentifiers$zodSchema;
50999
+ var init_sentidentifiers = __esm(() => {
51000
+ init_zod();
51001
+ SentIdentifiers$zodSchema = object({
51002
+ email: string2().optional().describe("identifiers.email as the request sent it."),
51003
+ ip: string2().optional().describe("identifiers.ip as the request sent it."),
51004
+ name: string2().optional().describe("identifiers.name as the request sent it, before NFC normalisation."),
51005
+ phone: string2().optional().describe("identifiers.phone as the request sent it."),
51006
+ username: string2().optional().describe("identifiers.username as the request sent it.")
51007
+ }).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.");
51008
+ });
51009
+
50997
51010
  // src/models/failurereason.ts
50998
51011
  var FailureReason$zodSchema;
50999
51012
  var init_failurereason = __esm(() => {
@@ -51239,6 +51252,7 @@ var init_assessmentdetail = __esm(() => {
51239
51252
  init_incompletesource();
51240
51253
  init_recommendation();
51241
51254
  init_risk();
51255
+ init_sentidentifiers();
51242
51256
  init_signal();
51243
51257
  init_status();
51244
51258
  AssessmentDetail$zodSchema = object({
@@ -51250,6 +51264,7 @@ var init_assessmentdetail = __esm(() => {
51250
51264
  confidence: Confidence$zodSchema.describe("Ordinal confidence in the recommendation under the current policy: low, medium, high or unavailable."),
51251
51265
  created_at: string2().describe("When the assessment was created. Fixed for the life of the assessment: every revision carries the same created_at."),
51252
51266
  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."),
51267
+ 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."),
51253
51268
  incomplete_sources: array(IncompleteSource$zodSchema).describe("The lanes that did not settle, each listed once with a reason; lanes, not sources. In a detailed view a lane is listed exactly when one of its signals did not settle; a standard view carries no signals to match."),
51254
51269
  policy_basis: literal("heuristic_unvalidated").default("heuristic_unvalidated").optional().describe("Labels the v0 policy as hand-authored and not statistically validated."),
51255
51270
  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'."),
@@ -52868,7 +52883,7 @@ var init_accountsExport2 = __esm(() => {
52868
52883
  name: "export_account",
52869
52884
  description: `Export an account
52870
52885
 
52871
- Retrieve one consistent snapshot of retained customer-accessible records, including assessment revisions, account decisions, feedback, key associations, enforcements and request diagnostics. Secrets, restricted source information, other customers' data and legacy free-text notes are excluded. The same standard/detailed permissions apply. An export exceeding 10000 records or 8 MiB returns export_too_large without a partial result. Historical decisions that were not captured are identified as an exclusion.`,
52886
+ Retrieve one consistent snapshot of retained customer-accessible records, including assessment revisions, account decisions, feedback, key associations, enforcements and request diagnostics. Each assessment revision's detail.identifiers holds the identifiers that assessment was sent, exactly as received. Secrets, restricted source information, other customers' data and legacy free-text notes are excluded. The same standard/detailed permissions apply. An export exceeding 10000 records or 8 MiB returns export_too_large without a partial result. Historical decisions that were not captured are identified as an exclusion.`,
52872
52887
  annotations: {
52873
52888
  title: "Export this account's retained customer-accessible records",
52874
52889
  destructiveHint: false,
@@ -53206,7 +53221,7 @@ var init_accountsListAssessments2 = __esm(() => {
53206
53221
  name: "list_account_assessments",
53207
53222
  description: `Page through one account's unexpired assessments.
53208
53223
 
53209
- The account's history: the same page as POST /v1/assessments/query for this account_id, newest first, each at its latest assessment_version. Requires the history scope. Read-only and safe to retry. An account with no assessments answers 200 with empty items. The cursor is opaque and bound to your workspace and the account; a tampered or expired cursor answers 400 invalid_cursor. response_mode=detailed needs the detailed scope. The account_id travels in the URL; use POST /v1/assessments/query to keep it out of access logs.`,
53224
+ The account's history: the same page as POST /v1/assessments/query for this account_id, newest first, each at its latest assessment_version. Requires the history scope. Read-only and safe to retry. An account with no assessments answers 200 with empty items. The cursor is opaque and bound to your workspace and the account; a tampered or expired cursor answers 400 invalid_cursor. response_mode=detailed needs the detailed scope. Each item's identifiers holds the identifiers its assessment was sent, exactly as received. The account_id travels in the URL; use POST /v1/assessments/query to keep it out of access logs.`,
53210
53225
  annotations: {
53211
53226
  title: "Page through an account's assessments",
53212
53227
  destructiveHint: false,
@@ -54879,7 +54894,7 @@ var init_assessmentsCreate2 = __esm(() => {
54879
54894
  name: "create_assessment",
54880
54895
  description: `Assess identifiers for a signup or gateway decision.
54881
54896
 
54882
- Assesses one account creation, login or purchase (flow) and answers with the account's one current risk: account.risk.decision is the decision for this flow (allow, step_up, review or block, where block means your block threshold was reached), and detail holds this assessment's own facts. depth sets how long the answer waits for sources: quick waits only for the fast ones (500 ms), full for the whole budget (3000 ms at most); it defaults to full for account_creation and purchase and quick for login. 200 carries complete or partial, 202 carries pending with Location and Retry-After. While the account's first assessment is pending, account is absent: apply your own fallback for that, 429, 503 or a timeout. NoResponse blocks nothing itself; you decide. Requires the assess scope. Idempotency-Key is optional in the SDK and is bound to the body for 24 hours: the same key with the same body replays the latest assessment with Idempotent-Replayed: true and starts no new work; the same key with a different body answers 409 idempotency_key_reused. response_mode defaults to standard; detailed needs the detailed scope.`,
54897
+ Assesses one account creation, login or purchase (flow) and answers with the account's one current risk: account.risk.decision is the decision for this flow (allow, step_up, review or block, where block means your block threshold was reached), and detail holds this assessment's own facts. depth sets how long the answer waits for sources: quick waits only for the fast ones (500 ms), full for the whole budget (3000 ms at most); it defaults to full for account_creation and purchase and quick for login. 200 carries complete or partial, 202 carries pending with Location and Retry-After. While the account's first assessment is pending, account is absent: apply your own fallback for that, 429, 503 or a timeout. NoResponse blocks nothing itself; you decide. Requires the assess scope. Idempotency-Key is optional in the SDK and is bound to the body for 24 hours: the same key with the same body replays the latest assessment with Idempotent-Replayed: true and starts no new work; the same key with a different body answers 409 idempotency_key_reused. response_mode defaults to standard; detailed needs the detailed scope. The answer leaves out detail.identifiers: you hold what you sent, and a key with the history scope gets them back with GET.`,
54883
54898
  annotations: {
54884
54899
  title: "Assess an account creation, login or purchase",
54885
54900
  destructiveHint: false,
@@ -55095,7 +55110,7 @@ var init_assessmentsGet2 = __esm(() => {
55095
55110
  name: "get_assessment",
55096
55111
  description: `Poll the authoritative assessment of one assessment.
55097
55112
 
55098
- Returns the highest assessment_version, with the account's current risk. Requires the assess or history scope. While status is pending, or partial with a source still running, the response carries Retry-After; poll no faster than it says. Another workspace's assessment, an unknown or expired assessment and a malformed assessment_id all answer 404 not_found. response_mode=detailed needs the detailed scope.`,
55113
+ Returns the highest assessment_version, with the account's current risk. Requires the assess or history scope. While status is pending, or partial with a source still running, the response carries Retry-After; poll no faster than it says. Another workspace's assessment, an unknown or expired assessment and a malformed assessment_id all answer 404 not_found. response_mode=detailed needs the detailed scope. A key with the history scope also gets detail.identifiers, the identifiers the assessment was sent, exactly as received.`,
55099
55114
  annotations: {
55100
55115
  title: "Get an assessment",
55101
55116
  destructiveHint: false,
@@ -55223,7 +55238,7 @@ var init_assessmentsQuery2 = __esm(() => {
55223
55238
  name: "query_assessments",
55224
55239
  description: `Page through one account's unexpired assessments.
55225
55240
 
55226
- History is a POST with account_id in the body so an account identifier stays out of URLs and access logs. Requires the history scope. Read-only and safe to retry. Newest first, each at its latest assessment_version. An account with no assessments answers 200 with empty items. The cursor is opaque and bound to your workspace and the account; a tampered or expired cursor answers 400 invalid_cursor. response_mode=detailed needs the detailed scope.`,
55241
+ History is a POST with account_id in the body so an account identifier stays out of URLs and access logs. Requires the history scope. Read-only and safe to retry. Newest first, each at its latest assessment_version. An account with no assessments answers 200 with empty items. The cursor is opaque and bound to your workspace and the account; a tampered or expired cursor answers 400 invalid_cursor. response_mode=detailed needs the detailed scope. Each item's identifiers holds the identifiers its assessment was sent, exactly as received.`,
55227
55242
  annotations: {
55228
55243
  title: "List an account's assessments",
55229
55244
  destructiveHint: false,
@@ -55579,7 +55594,7 @@ var init_assessmentsRetrieveVersion2 = __esm(() => {
55579
55594
  name: "get_assessment_version",
55580
55595
  description: `Retrieve an exact assessment revision
55581
55596
 
55582
- 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.`,
55597
+ 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. detail.identifiers holds the identifiers the assessment was sent, exactly as received.`,
55583
55598
  annotations: {
55584
55599
  title: "Read an exact assessment revision",
55585
55600
  destructiveHint: false,
@@ -55729,7 +55744,7 @@ var init_assessmentsSearch2 = __esm(() => {
55729
55744
  name: "search_assessments",
55730
55745
  description: `Search assessments across this environment
55731
55746
 
55732
- 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.`,
55747
+ 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. This read does not require an idempotency key.`,
55733
55748
  annotations: {
55734
55749
  title: "Search assessments in this environment",
55735
55750
  destructiveHint: false,
@@ -59032,7 +59047,7 @@ endpoint.verification sends a signed challenge now and answers whether the endpo
59032
59047
  function createMCPServer(deps) {
59033
59048
  const server = new McpServer({
59034
59049
  name: "NoResponse",
59035
- version: "0.6.12"
59050
+ version: "0.6.13"
59036
59051
  });
59037
59052
  const getClient = deps.getSDK || (() => new NoResponseCore({
59038
59053
  security: deps.security,
@@ -59152,13 +59167,13 @@ var init_tool_names = __esm(() => {
59152
59167
  name: "create_assessment",
59153
59168
  description: `Assess identifiers for a signup or gateway decision.
59154
59169
 
59155
- Assesses one account creation, login or purchase (flow) and answers with the account's one current risk: account.risk.decision is the decision for this flow (allow, step_up, review or block, where block means your block threshold was reached), and detail holds this assessment's own facts. depth sets how long the answer waits for sources: quick waits only for the fast ones (500 ms), full for the whole budget (3000 ms at most); it defaults to full for account_creation and purchase and quick for login. 200 carries complete or partial, 202 carries pending with Location and Retry-After. While the account's first assessment is pending, account is absent: apply your own fallback for that, 429, 503 or a timeout. NoResponse blocks nothing itself; you decide. Requires the assess scope. Idempotency-Key is optional in the SDK and is bound to the body for 24 hours: the same key with the same body replays the latest assessment with Idempotent-Replayed: true and starts no new work; the same key with a different body answers 409 idempotency_key_reused. response_mode defaults to standard; detailed needs the detailed scope.`
59170
+ Assesses one account creation, login or purchase (flow) and answers with the account's one current risk: account.risk.decision is the decision for this flow (allow, step_up, review or block, where block means your block threshold was reached), and detail holds this assessment's own facts. depth sets how long the answer waits for sources: quick waits only for the fast ones (500 ms), full for the whole budget (3000 ms at most); it defaults to full for account_creation and purchase and quick for login. 200 carries complete or partial, 202 carries pending with Location and Retry-After. While the account's first assessment is pending, account is absent: apply your own fallback for that, 429, 503 or a timeout. NoResponse blocks nothing itself; you decide. Requires the assess scope. Idempotency-Key is optional in the SDK and is bound to the body for 24 hours: the same key with the same body replays the latest assessment with Idempotent-Replayed: true and starts no new work; the same key with a different body answers 409 idempotency_key_reused. response_mode defaults to standard; detailed needs the detailed scope. The answer leaves out detail.identifiers: you hold what you sent, and a key with the history scope gets them back with GET.`
59156
59171
  },
59157
59172
  {
59158
59173
  name: "get_assessment",
59159
59174
  description: `Poll the authoritative assessment of one assessment.
59160
59175
 
59161
- Returns the highest assessment_version, with the account's current risk. Requires the assess or history scope. While status is pending, or partial with a source still running, the response carries Retry-After; poll no faster than it says. Another workspace's assessment, an unknown or expired assessment and a malformed assessment_id all answer 404 not_found. response_mode=detailed needs the detailed scope.`
59176
+ Returns the highest assessment_version, with the account's current risk. Requires the assess or history scope. While status is pending, or partial with a source still running, the response carries Retry-After; poll no faster than it says. Another workspace's assessment, an unknown or expired assessment and a malformed assessment_id all answer 404 not_found. response_mode=detailed needs the detailed scope. A key with the history scope also gets detail.identifiers, the identifiers the assessment was sent, exactly as received.`
59162
59177
  },
59163
59178
  {
59164
59179
  name: "delete_assessment",
@@ -59176,19 +59191,19 @@ Records what you later learned about an assessed account: confirmed_abuse, accou
59176
59191
  name: "query_assessments",
59177
59192
  description: `Page through one account's unexpired assessments.
59178
59193
 
59179
- History is a POST with account_id in the body so an account identifier stays out of URLs and access logs. Requires the history scope. Read-only and safe to retry. Newest first, each at its latest assessment_version. An account with no assessments answers 200 with empty items. The cursor is opaque and bound to your workspace and the account; a tampered or expired cursor answers 400 invalid_cursor. response_mode=detailed needs the detailed scope.`
59194
+ History is a POST with account_id in the body so an account identifier stays out of URLs and access logs. Requires the history scope. Read-only and safe to retry. Newest first, each at its latest assessment_version. An account with no assessments answers 200 with empty items. The cursor is opaque and bound to your workspace and the account; a tampered or expired cursor answers 400 invalid_cursor. response_mode=detailed needs the detailed scope. Each item's identifiers holds the identifiers its assessment was sent, exactly as received.`
59180
59195
  },
59181
59196
  {
59182
59197
  name: "search_assessments",
59183
59198
  description: `Search assessments across this environment
59184
59199
 
59185
- 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.`
59200
+ 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. This read does not require an idempotency key.`
59186
59201
  },
59187
59202
  {
59188
59203
  name: "get_assessment_version",
59189
59204
  description: `Retrieve an exact assessment revision
59190
59205
 
59191
- 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.`
59206
+ 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. detail.identifiers holds the identifiers the assessment was sent, exactly as received.`
59192
59207
  },
59193
59208
  {
59194
59209
  name: "bind_provisional_account",
@@ -59218,7 +59233,7 @@ Erases the account in the environment of your key, for an erasure request from y
59218
59233
  name: "list_account_assessments",
59219
59234
  description: `Page through one account's unexpired assessments.
59220
59235
 
59221
- The account's history: the same page as POST /v1/assessments/query for this account_id, newest first, each at its latest assessment_version. Requires the history scope. Read-only and safe to retry. An account with no assessments answers 200 with empty items. The cursor is opaque and bound to your workspace and the account; a tampered or expired cursor answers 400 invalid_cursor. response_mode=detailed needs the detailed scope. The account_id travels in the URL; use POST /v1/assessments/query to keep it out of access logs.`
59236
+ The account's history: the same page as POST /v1/assessments/query for this account_id, newest first, each at its latest assessment_version. Requires the history scope. Read-only and safe to retry. An account with no assessments answers 200 with empty items. The cursor is opaque and bound to your workspace and the account; a tampered or expired cursor answers 400 invalid_cursor. response_mode=detailed needs the detailed scope. Each item's identifiers holds the identifiers its assessment was sent, exactly as received. The account_id travels in the URL; use POST /v1/assessments/query to keep it out of access logs.`
59222
59237
  },
59223
59238
  {
59224
59239
  name: "record_enforcement",
@@ -59266,7 +59281,7 @@ Mark this association retired, idempotently. This does not revoke the actual key
59266
59281
  name: "export_account",
59267
59282
  description: `Export an account
59268
59283
 
59269
- Retrieve one consistent snapshot of retained customer-accessible records, including assessment revisions, account decisions, feedback, key associations, enforcements and request diagnostics. Secrets, restricted source information, other customers' data and legacy free-text notes are excluded. The same standard/detailed permissions apply. An export exceeding 10000 records or 8 MiB returns export_too_large without a partial result. Historical decisions that were not captured are identified as an exclusion.`
59284
+ Retrieve one consistent snapshot of retained customer-accessible records, including assessment revisions, account decisions, feedback, key associations, enforcements and request diagnostics. Each assessment revision's detail.identifiers holds the identifiers that assessment was sent, exactly as received. Secrets, restricted source information, other customers' data and legacy free-text notes are excluded. The same standard/detailed permissions apply. An export exceeding 10000 records or 8 MiB returns export_too_large without a partial result. Historical decisions that were not captured are identified as an exclusion.`
59270
59285
  },
59271
59286
  {
59272
59287
  name: "list_keys",
@@ -67881,7 +67896,7 @@ var routes = buildRouteMap({
67881
67896
  var app = buildApplication(routes, {
67882
67897
  name: "mcp",
67883
67898
  versionInfo: {
67884
- currentVersion: "0.6.12"
67899
+ currentVersion: "0.6.13"
67885
67900
  }
67886
67901
  });
67887
67902
  run(app, process3.argv.slice(2), buildContext(process3));
@@ -67889,5 +67904,5 @@ export {
67889
67904
  app
67890
67905
  };
67891
67906
 
67892
- //# debugId=01809CD030BCB09364756E2164756E21
67907
+ //# debugId=C65D8B95DD85934464756E2164756E21
67893
67908
  //# sourceMappingURL=mcp-server.js.map