diff --git a/apps/mcp-server/.speakeasy/gen.lock b/apps/mcp-server/.speakeasy/gen.lock index 6112f28d24..db4d0478aa 100644 --- a/apps/mcp-server/.speakeasy/gen.lock +++ b/apps/mcp-server/.speakeasy/gen.lock @@ -1,20 +1,20 @@ lockVersion: 2.0.0 id: f7130d09-dac4-4515-9162-6095782b6bb6 management: - docChecksum: 35bfc6f0fda8bfe04a92b0c8d0590422 + docChecksum: ac6da71b7246fc81aff6be78caf5f35c docVersion: "1.0" - speakeasyVersion: 1.790.3 - generationVersion: 2.918.4 - releaseVersion: 0.2.5 - configChecksum: 16b11601c6d385e8fcd89719245bf1f4 + speakeasyVersion: 1.791.0 + generationVersion: 2.924.0 + releaseVersion: 0.2.6 + configChecksum: b6b473105a7c754c04de2143d2db564a repoURL: https://github.com/trycompai/comp.git repoSubDirectory: apps/mcp-server installationURL: https://github.com/trycompai/comp published: true persistentEdits: - generation_id: 17e70532-e3a6-4332-a01b-932b527573cb - pristine_commit_hash: e91965731fb9be5f2ad648b2b95ffdb7bf59db48 - pristine_tree_hash: d6f794e558fe5cc10b16fc8c02711092d897cf29 + generation_id: 3c183311-2968-4491-8fb2-38cbbf460476 + pristine_commit_hash: 3efe11bf02b6929a4f3bbc8fa8f460e79d6b14ef + pristine_tree_hash: 6a0c8ee97e89247aee1f6af6e5db1f211dce3754 features: mcp-typescript: additionalDependencies: 0.1.0 @@ -51,12 +51,12 @@ trackedFiles: pristine_git_object: 4f9e60a9462fc4def738d60c3aaadf8232ef185f manifest.json: id: ca642a226869 - last_write_checksum: sha1:f669ae5941c3b289dc8b573789626cba3757a8fd - pristine_git_object: 9d6a1ee3db7e4e8757abffa67007794c3de60349 + last_write_checksum: sha1:08ebdaa8e8498fb285c354875e7d9fee74fe2292 + pristine_git_object: 546471ae0f647afd3a402ddf5d4d4a94a6fd6bd9 package.json: id: 7030d0b2f71b - last_write_checksum: sha1:12dca10a6b86137961fd4475234c28c4a0ac078b - pristine_git_object: 2832d9d9215452a3d3fa717c8708e56ca305370e + last_write_checksum: sha1:57355c53023fd05f90962f97b509fc63cd82e004 + pristine_git_object: 9c3cc72188129a188fd11498bbce5cafee30312b src/core.ts: id: f431fdbcd144 last_write_checksum: sha1:3c1fe2275a0f345cf54298150f100299284b3f0e @@ -1095,8 +1095,8 @@ trackedFiles: pristine_git_object: b6427c087fa3a520b90ad94df1836393e2bc65e1 src/funcs/questionnaireQuestionnaireControllerAnswerSingleQuestionV1.ts: id: 77e939645afc - last_write_checksum: sha1:9d1f80574a9aa2c3b0896c0b0ecb682ee63d08a3 - pristine_git_object: f7411a14e5917d4f53e789bca72362f75cc5aec6 + last_write_checksum: sha1:878739188a3f896ae9ebabf01f69fbda24d4ecf9 + pristine_git_object: 2e6fec1060d98830f40b80a80e42ba8d6830dd2a src/funcs/questionnaireQuestionnaireControllerAutoAnswerAndExportUploadV1.ts: id: 8d3b5221a040 last_write_checksum: sha1:abe54a27d9ac034de5802ccb0bac4b257d1f0f95 @@ -1723,16 +1723,16 @@ trackedFiles: pristine_git_object: 9c36bf01332084f735909a71036c3544cc4c7e3a src/landing-page.ts: id: ef64a6ee46d7 - last_write_checksum: sha1:5776685e5bb1d4778a4abb35a4d984a5b9241321 - pristine_git_object: 41218b4a5099d8630f4bc30b91f75eac29ffcf28 + last_write_checksum: sha1:6e7820fbb6198812d8739463c97a94a76d2614c2 + pristine_git_object: d22c40907d61e5d48e517cae85eb08495d87bf7f src/lib/base64.ts: id: "598522066688" last_write_checksum: sha1:e9f04a037018040361043104960982f7c22db52d pristine_git_object: d4bd8b341290e7a828a171d840bd0b0fff7c7cd7 src/lib/config.ts: id: 320761608fb3 - last_write_checksum: sha1:84e32d3e3fe0ffeb947c26f0a03b08413cc2790d - pristine_git_object: dab403e196f65f0db332460cebcf11ad61de3093 + last_write_checksum: sha1:417726f62ad7185cec76059bf0f8ac541b587867 + pristine_git_object: f48bf3dc970fb07d032b8c584913ca1d35edd4f3 src/lib/encodings.ts: id: 3bd8ead98afd last_write_checksum: sha1:3ff4ad6809b749125820fd39c01427b84d3fe0d6 @@ -1819,8 +1819,8 @@ trackedFiles: pristine_git_object: 35c8713b6f8c7f17e2545423d3e74401ff77d04b src/mcp-server/mcp-server.ts: id: aabbc4ab07c1 - last_write_checksum: sha1:c0ee56a958e0339df1a769b03ed72a69918e60f1 - pristine_git_object: 615cc68169fd072c601af0e9c64da16c5e5a3b45 + last_write_checksum: sha1:d9d9934dcc66c5ef1cc3622d17b0f5d23c715f02 + pristine_git_object: 9408a1c1e6eb9cba1024b7e9a1ec86fbcbd47104 src/mcp-server/prompts.ts: id: 26f3d73cbf31 last_write_checksum: sha1:cadb036e04534a6d9d765809eebb266d188c499b @@ -1835,8 +1835,8 @@ trackedFiles: pristine_git_object: c25696d4c4f70e081fa5d87ad6891874c509a577 src/mcp-server/server.ts: id: 2784dd48e82a - last_write_checksum: sha1:ec87a97923d502b60af5794da916186b9270299a - pristine_git_object: 34152619072b0a0a8ce6a8f214e8dd76fafaba83 + last_write_checksum: sha1:e3069b1f0342b8d491722c9097b31a847c2423bb + pristine_git_object: 2d480e310612575a6c94fa7d3494179ea94d522f src/mcp-server/shared.ts: id: 074e80d4be1e last_write_checksum: sha1:19c9034032819a14f15c430de4350c8aba99d725 @@ -3347,8 +3347,8 @@ trackedFiles: pristine_git_object: 1f60df367349bd8e7bb33f262beb7927b2f6d17a src/models/answersinglequestiondto.ts: id: 27b165c7833f - last_write_checksum: sha1:1727dde7af44892d514b5a636c0c0ae8fbef1db3 - pristine_git_object: e479191deb60ffde26f23b06fff7f8b6a6573d53 + last_write_checksum: sha1:f4c50d4bbf24e0601a3fda64581ab566c8aac920 + pristine_git_object: 468d6a4b3b4dec8b4f0f3eadc2c0d5e3a4d9ee64 src/models/approveaccessrequestdto.ts: id: 70f67f1ee754 last_write_checksum: sha1:76b48399f4f6dff3a26ffa323d8394a7280ea4f1 @@ -6677,7 +6677,7 @@ examples: QuestionnaireController_answerSingleQuestion_v1: speakeasy-default-questionnaire-controller-answer-single-question-v1: requestBody: - application/json: {} + application/json: {"question": "Do you encrypt customer data at rest?", "questionIndex": 0, "totalQuestions": 12, "organizationId": "org_abc123", "questionnaireId": "qst_abc123"} responses: "200": application/json: {} @@ -7787,4 +7787,6 @@ examples: requestBody: application/json: {"measurements": []} examplesVersion: 1.0.2 -releaseNotes: "## Mcp-typescript SDK Changes:\n* `CompAi.Audit Logs.AuditLogController_getAuditLogs_v1()`: \n * `request.offset` **Added**\n" +releaseNotes: | + ## Mcp-typescript SDK Changes: + * `CompAi.Questionnaire.QuestionnaireController_answerSingleQuestion_v1()`: `request` **Changed** (Breaking ⚠️) diff --git a/apps/mcp-server/.speakeasy/gen.yaml b/apps/mcp-server/.speakeasy/gen.yaml index 2a9cc43633..25007a15db 100644 --- a/apps/mcp-server/.speakeasy/gen.yaml +++ b/apps/mcp-server/.speakeasy/gen.yaml @@ -31,7 +31,7 @@ generation: generateNewTests: true skipResponseBodyAssertions: false mcp-typescript: - version: 0.2.5 + version: 0.2.6 additionalDependencies: dependencies: {} devDependencies: {} diff --git a/apps/mcp-server/.speakeasy/out.openapi.yaml b/apps/mcp-server/.speakeasy/out.openapi.yaml index ffd45ce94c..1be5bbf26f 100644 --- a/apps/mcp-server/.speakeasy/out.openapi.yaml +++ b/apps/mcp-server/.speakeasy/out.openapi.yaml @@ -12935,6 +12935,7 @@ paths: name: "parse-questionnaire" /v1/questionnaire/answer-single: post: + description: "Generate an answer for one security questionnaire item using the organization evidence library and return source references for review." operationId: "QuestionnaireController_answerSingleQuestion_v1" parameters: [] requestBody: @@ -12975,7 +12976,6 @@ paths: summary: "Answer one questionnaire question" tags: - "Questionnaire" - description: "Generate an answer for one security questionnaire item using the organization evidence library and return source references for review." x-mint: href: "/api-reference/questionnaire/answer-a-single-questionnaire-question" metadata: @@ -20756,7 +20756,34 @@ components: properties: {} AnswerSingleQuestionDto: type: "object" - properties: {} + properties: + question: + type: "string" + description: "Security questionnaire question to answer." + example: "Do you encrypt customer data at rest?" + questionIndex: + type: "number" + description: "Zero-based index of this question in the questionnaire or page batch." + example: 0 + minimum: 0 + totalQuestions: + type: "number" + description: "Total number of questions in the current questionnaire or page batch." + example: 12 + minimum: 1 + organizationId: + type: "string" + description: "Organization ID for validation. The API uses the authenticated active organization and overwrites this value server-side." + example: "org_abc123" + questionnaireId: + type: "string" + description: "Optional questionnaire record to save the generated answer into. Omit for webpage-only answer generation." + example: "qst_abc123" + required: + - "question" + - "questionIndex" + - "totalQuestions" + - "organizationId" SaveAnswerDto: type: "object" properties: {} diff --git a/apps/mcp-server/.speakeasy/workflow.lock b/apps/mcp-server/.speakeasy/workflow.lock index 8cc8f08a2a..905e092809 100644 --- a/apps/mcp-server/.speakeasy/workflow.lock +++ b/apps/mcp-server/.speakeasy/workflow.lock @@ -1,9 +1,9 @@ -speakeasyVersion: 1.790.3 +speakeasyVersion: 1.791.0 sources: Comp AI API: sourceNamespace: comp-ai-api - sourceRevisionDigest: sha256:7e436f809cfd668dfa5e35ebc8cf514687da43e9329602b90df51d2a521b2df1 - sourceBlobDigest: sha256:02b9837a0a13d2d105ddfc00b05b4c76ae81d290b3986b5012dae3e79b98b800 + sourceRevisionDigest: sha256:c8a2377646f2722d17f252054995b009202a1334c6aad33adf8ed9f990f80e21 + sourceBlobDigest: sha256:826da6bdc8aec86733370b9e4e738d443e28e2729729154e6c085f6e04c858cb tags: - latest - "1.0" @@ -11,8 +11,8 @@ targets: comp-ai: source: Comp AI API sourceNamespace: comp-ai-api - sourceRevisionDigest: sha256:7e436f809cfd668dfa5e35ebc8cf514687da43e9329602b90df51d2a521b2df1 - sourceBlobDigest: sha256:02b9837a0a13d2d105ddfc00b05b4c76ae81d290b3986b5012dae3e79b98b800 + sourceRevisionDigest: sha256:c8a2377646f2722d17f252054995b009202a1334c6aad33adf8ed9f990f80e21 + sourceBlobDigest: sha256:826da6bdc8aec86733370b9e4e738d443e28e2729729154e6c085f6e04c858cb workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/apps/mcp-server/README.md b/apps/mcp-server/README.md index a5ee572ba5..83f75a0efa 100644 --- a/apps/mcp-server/README.md +++ b/apps/mcp-server/README.md @@ -30,9 +30,9 @@ Comp AI API: Compliance automation API for SOC 2, ISO 27001, HIPAA, GDPR, eviden
Claude Desktop -Install the MCP server as a Desktop Extension using the pre-built [`mcp-server.mcpb`](https://github.com/trycompai/comp/releases/download/v0.2.5/mcp-server.mcpb) file: +Install the MCP server as a Desktop Extension using the pre-built [`mcp-server.mcpb`](https://github.com/trycompai/comp/releases/download/v0.2.6/mcp-server.mcpb) file: -Simply drag and drop the [`mcp-server.mcpb`](https://github.com/trycompai/comp/releases/download/v0.2.5/mcp-server.mcpb) file onto Claude Desktop to install the extension. +Simply drag and drop the [`mcp-server.mcpb`](https://github.com/trycompai/comp/releases/download/v0.2.6/mcp-server.mcpb) file onto Claude Desktop to install the extension. The MCP bundle package includes the MCP server and all necessary configuration. Once installed, the server will be available without additional setup. diff --git a/apps/mcp-server/RELEASES.md b/apps/mcp-server/RELEASES.md index ad2388f1af..883ea19d42 100644 --- a/apps/mcp-server/RELEASES.md +++ b/apps/mcp-server/RELEASES.md @@ -78,4 +78,12 @@ Based on: - OpenAPI Doc - Speakeasy CLI 1.790.3 (2.918.4) https://github.com/speakeasy-api/speakeasy ### Generated -- [mcp-typescript v0.2.5] apps/mcp-server \ No newline at end of file +- [mcp-typescript v0.2.5] apps/mcp-server + +## 2026-08-01 00:52:32 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.791.0 (2.924.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [mcp-typescript v0.2.6] apps/mcp-server \ No newline at end of file diff --git a/apps/mcp-server/manifest.json b/apps/mcp-server/manifest.json index 9d6a1ee3db..546471ae0f 100644 --- a/apps/mcp-server/manifest.json +++ b/apps/mcp-server/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": "0.3", "name": "@trycompai/mcp-server", - "version": "0.2.5", + "version": "0.2.6", "description": "", "long_description": "Comp AI API: Compliance automation API for SOC 2, ISO 27001, HIPAA, GDPR, evidence collection, policy workflows, Trust Access, security questionnaires, integrations, cloud checks, and device compliance.", "author": { diff --git a/apps/mcp-server/package-lock.json b/apps/mcp-server/package-lock.json index c353798d11..6ded6ae979 100644 --- a/apps/mcp-server/package-lock.json +++ b/apps/mcp-server/package-lock.json @@ -1,12 +1,12 @@ { "name": "@trycompai/mcp-server", - "version": "0.2.5", + "version": "0.2.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@trycompai/mcp-server", - "version": "0.2.5", + "version": "0.2.6", "dependencies": { "@modelcontextprotocol/sdk": "1.26.0", "@stricli/core": "^1.1.2", diff --git a/apps/mcp-server/package.json b/apps/mcp-server/package.json index 2832d9d921..9c3cc72188 100644 --- a/apps/mcp-server/package.json +++ b/apps/mcp-server/package.json @@ -1,6 +1,6 @@ { "name": "@trycompai/mcp-server", - "version": "0.2.5", + "version": "0.2.6", "author": "Comp AI", "type": "module", "sideEffects": false, diff --git a/apps/mcp-server/src/funcs/questionnaireQuestionnaireControllerAnswerSingleQuestionV1.ts b/apps/mcp-server/src/funcs/questionnaireQuestionnaireControllerAnswerSingleQuestionV1.ts index f7411a14e5..2e6fec1060 100644 --- a/apps/mcp-server/src/funcs/questionnaireQuestionnaireControllerAnswerSingleQuestionV1.ts +++ b/apps/mcp-server/src/funcs/questionnaireQuestionnaireControllerAnswerSingleQuestionV1.ts @@ -3,11 +3,16 @@ */ import { CompAiCore } from "../core.js"; +import { encodeJSON } from "../lib/encodings.js"; import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; import { RequestOptions } from "../lib/sdks.js"; import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; import { pathToFunc } from "../lib/url.js"; -import { AnswerSingleQuestionDto } from "../models/answersinglequestiondto.js"; +import { + AnswerSingleQuestionDto, + AnswerSingleQuestionDto$zodSchema, +} from "../models/answersinglequestiondto.js"; import { APIError } from "../models/errors/apierror.js"; import { ConnectionError, @@ -30,7 +35,7 @@ import { Result } from "../types/fp.js"; */ export function questionnaireQuestionnaireControllerAnswerSingleQuestionV1( client$: CompAiCore, - _request: AnswerSingleQuestionDto, + request: AnswerSingleQuestionDto, options?: RequestOptions, ): APIPromise< Result< @@ -46,14 +51,14 @@ export function questionnaireQuestionnaireControllerAnswerSingleQuestionV1( > { return new APIPromise($do( client$, - _request, + request, options, )); } async function $do( client$: CompAiCore, - _request: AnswerSingleQuestionDto, + request: AnswerSingleQuestionDto, options?: RequestOptions, ): Promise< [ @@ -70,6 +75,16 @@ async function $do( APICall, ] > { + const parsed$ = safeParse( + request, + (value$) => AnswerSingleQuestionDto$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = encodeJSON("body", payload$, { explode: true }); const path$ = pathToFunc("/v1/questionnaire/answer-single")(); const headers$ = new Headers(compactMap({ @@ -104,6 +119,7 @@ async function $do( baseURL: options?.serverURL, path: path$, headers: headers$, + body: body$, userAgent: client$._options.userAgent, timeoutMs: options?.timeoutMs || client$._options.timeoutMs || 120000, diff --git a/apps/mcp-server/src/landing-page.ts b/apps/mcp-server/src/landing-page.ts index 41218b4a50..d22c40907d 100644 --- a/apps/mcp-server/src/landing-page.ts +++ b/apps/mcp-server/src/landing-page.ts @@ -930,7 +930,7 @@ http_headers = { "apikey" = "YOUR_APIKEY" }`;

Instructions

One-click installation for Claude Desktop users

- + 📥 Download MCP Bundle
diff --git a/apps/mcp-server/src/lib/config.ts b/apps/mcp-server/src/lib/config.ts index dab403e196..f48bf3dc97 100644 --- a/apps/mcp-server/src/lib/config.ts +++ b/apps/mcp-server/src/lib/config.ts @@ -65,8 +65,8 @@ export function serverURLFromOptions(options: SDKOptions): URL | null { export const SDK_METADATA = { language: "typescript", openapiDocVersion: "1.0", - sdkVersion: "0.2.5", - genVersion: "2.918.4", + sdkVersion: "0.2.6", + genVersion: "2.924.0", userAgent: - "speakeasy-sdk/mcp-typescript 0.2.5 2.918.4 1.0 @trycompai/mcp-server", + "speakeasy-sdk/mcp-typescript 0.2.6 2.924.0 1.0 @trycompai/mcp-server", } as const; diff --git a/apps/mcp-server/src/mcp-server/mcp-server.ts b/apps/mcp-server/src/mcp-server/mcp-server.ts index 615cc68169..9408a1c1e6 100644 --- a/apps/mcp-server/src/mcp-server/mcp-server.ts +++ b/apps/mcp-server/src/mcp-server/mcp-server.ts @@ -21,7 +21,7 @@ const routes = buildRouteMap({ export const app = buildApplication(routes, { name: "mcp", versionInfo: { - currentVersion: "0.2.5", + currentVersion: "0.2.6", }, }); diff --git a/apps/mcp-server/src/mcp-server/server.ts b/apps/mcp-server/src/mcp-server/server.ts index 3415261907..2d480e3106 100644 --- a/apps/mcp-server/src/mcp-server/server.ts +++ b/apps/mcp-server/src/mcp-server/server.ts @@ -404,7 +404,7 @@ export function createMCPServer(deps: { }) { const server = new McpServer({ name: "CompAi", - version: "0.2.5", + version: "0.2.6", }); const getClient = deps.getSDK || (() => diff --git a/apps/mcp-server/src/models/answersinglequestiondto.ts b/apps/mcp-server/src/models/answersinglequestiondto.ts index e479191deb..468d6a4b3b 100644 --- a/apps/mcp-server/src/models/answersinglequestiondto.ts +++ b/apps/mcp-server/src/models/answersinglequestiondto.ts @@ -4,8 +4,28 @@ import * as z from "zod"; -export type AnswerSingleQuestionDto = {}; +export type AnswerSingleQuestionDto = { + question: string; + questionIndex: number; + totalQuestions: number; + organizationId: string; + questionnaireId?: string | undefined; +}; export const AnswerSingleQuestionDto$zodSchema: z.ZodType< AnswerSingleQuestionDto -> = z.object({}); +> = z.object({ + organizationId: z.string().describe( + "Organization ID for validation. The API uses the authenticated active organization and overwrites this value server-side.", + ), + question: z.string().describe("Security questionnaire question to answer."), + questionIndex: z.number().describe( + "Zero-based index of this question in the questionnaire or page batch.", + ), + questionnaireId: z.string().optional().describe( + "Optional questionnaire record to save the generated answer into. Omit for webpage-only answer generation.", + ), + totalQuestions: z.number().describe( + "Total number of questions in the current questionnaire or page batch.", + ), +});