diff --git a/pkg/server/api/mcp/v1/schema.resolvers.go b/pkg/server/api/mcp/v1/schema.resolvers.go index 2e0253989..104665e57 100644 --- a/pkg/server/api/mcp/v1/schema.resolvers.go +++ b/pkg/server/api/mcp/v1/schema.resolvers.go @@ -3351,3 +3351,29 @@ func (r *Resolver) PublishMinorDocumentVersionTool(ctx context.Context, req *mcp DocumentVersion: types.NewDocumentVersion(documentVersion), }, nil } + +func (r *Resolver) UpdateDocumentVersionContentTool(ctx context.Context, req *mcp.CallToolRequest, input *types.UpdateDocumentVersionContentInput) (*mcp.CallToolResult, types.UpdateDocumentVersionContentOutput, error) { + r.MustAuthorize(ctx, input.DocumentVersionID, probo.ActionDocumentUpdate) + + svc := r.ProboService(ctx, input.DocumentVersionID) + + content, err := svc.Documents.UpdateDocumentVersionContent( + ctx, + probo.UpdateDocumentVersionRequest{ + ID: input.DocumentVersionID, + Content: input.Content, + }, + ) + if err != nil { + var errNotDraft *probo.ErrDocumentVersionNotDraft + if errors.As(err, &errNotDraft) { + return nil, types.UpdateDocumentVersionContentOutput{}, fmt.Errorf("cannot update document version content: %w", err) + } + + panic(fmt.Errorf("cannot update document version content: %w", err)) + } + + return nil, types.UpdateDocumentVersionContentOutput{ + Content: content, + }, nil +} diff --git a/pkg/server/api/mcp/v1/specification.yaml b/pkg/server/api/mcp/v1/specification.yaml index 93557d4ff..6f8376cf0 100644 --- a/pkg/server/api/mcp/v1/specification.yaml +++ b/pkg/server/api/mcp/v1/specification.yaml @@ -5597,6 +5597,28 @@ components: document_version: $ref: "#/components/schemas/DocumentVersion" + UpdateDocumentVersionContentInput: + type: object + required: + - document_version_id + - content + properties: + document_version_id: + $ref: "#/components/schemas/GID" + description: Document version ID + content: + type: string + description: ProseMirror JSON document content + + UpdateDocumentVersionContentOutput: + type: object + required: + - content + properties: + content: + type: string + description: Updated document content + DeleteDraftDocumentVersionInput: type: object required: @@ -7484,6 +7506,14 @@ tools: $ref: "#/components/schemas/UpdateDocumentVersionInput" outputSchema: $ref: "#/components/schemas/UpdateDocumentVersionOutput" + - name: updateDocumentVersionContent + description: Update draft document version body content only (ProseMirror JSON). + hints: + readonly: false + inputSchema: + $ref: "#/components/schemas/UpdateDocumentVersionContentInput" + outputSchema: + $ref: "#/components/schemas/UpdateDocumentVersionContentOutput" - name: deleteDraftDocumentVersion description: Delete a draft document version hints: