Add delete vendor tool on mcp
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
@@ -3192,3 +3192,18 @@ func (r *Resolver) AddVendorRiskAssessmentTool(ctx context.Context, req *mcp.Cal
|
|||||||
|
|
||||||
return nil, types.NewAddVendorRiskAssessmentOutput(assessment), nil
|
return nil, types.NewAddVendorRiskAssessmentOutput(assessment), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *Resolver) DeleteVendorTool(ctx context.Context, req *mcp.CallToolRequest, input *types.DeleteVendorInput) (*mcp.CallToolResult, types.DeleteVendorOutput, error) {
|
||||||
|
r.MustAuthorize(ctx, input.ID, probo.ActionVendorDelete)
|
||||||
|
|
||||||
|
svc := r.ProboService(ctx, input.ID)
|
||||||
|
|
||||||
|
err := svc.Vendors.Delete(ctx, input.ID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, types.DeleteVendorOutput{}, fmt.Errorf("failed to delete vendor: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, types.DeleteVendorOutput{
|
||||||
|
DeletedVendorID: input.ID,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ type ResolverInterface interface {
|
|||||||
UpdateVendorTool(ctx context.Context, req *mcp.CallToolRequest, input *types.UpdateVendorInput) (*mcp.CallToolResult, types.UpdateVendorOutput, error)
|
UpdateVendorTool(ctx context.Context, req *mcp.CallToolRequest, input *types.UpdateVendorInput) (*mcp.CallToolResult, types.UpdateVendorOutput, error)
|
||||||
ListVendorRiskAssessmentsTool(ctx context.Context, req *mcp.CallToolRequest, input *types.ListVendorRiskAssessmentsInput) (*mcp.CallToolResult, types.ListVendorRiskAssessmentsOutput, error)
|
ListVendorRiskAssessmentsTool(ctx context.Context, req *mcp.CallToolRequest, input *types.ListVendorRiskAssessmentsInput) (*mcp.CallToolResult, types.ListVendorRiskAssessmentsOutput, error)
|
||||||
AddVendorRiskAssessmentTool(ctx context.Context, req *mcp.CallToolRequest, input *types.AddVendorRiskAssessmentInput) (*mcp.CallToolResult, types.AddVendorRiskAssessmentOutput, error)
|
AddVendorRiskAssessmentTool(ctx context.Context, req *mcp.CallToolRequest, input *types.AddVendorRiskAssessmentInput) (*mcp.CallToolResult, types.AddVendorRiskAssessmentOutput, error)
|
||||||
|
DeleteVendorTool(ctx context.Context, req *mcp.CallToolRequest, input *types.DeleteVendorInput) (*mcp.CallToolResult, types.DeleteVendorOutput, error)
|
||||||
ListRisksTool(ctx context.Context, req *mcp.CallToolRequest, input *types.ListRisksInput) (*mcp.CallToolResult, types.ListRisksOutput, error)
|
ListRisksTool(ctx context.Context, req *mcp.CallToolRequest, input *types.ListRisksInput) (*mcp.CallToolResult, types.ListRisksOutput, error)
|
||||||
GetRiskTool(ctx context.Context, req *mcp.CallToolRequest, input *types.GetRiskInput) (*mcp.CallToolResult, types.GetRiskOutput, error)
|
GetRiskTool(ctx context.Context, req *mcp.CallToolRequest, input *types.GetRiskInput) (*mcp.CallToolResult, types.GetRiskOutput, error)
|
||||||
AddRiskTool(ctx context.Context, req *mcp.CallToolRequest, input *types.AddRiskInput) (*mcp.CallToolResult, types.AddRiskOutput, error)
|
AddRiskTool(ctx context.Context, req *mcp.CallToolRequest, input *types.AddRiskInput) (*mcp.CallToolResult, types.AddRiskOutput, error)
|
||||||
@@ -307,6 +308,19 @@ func registerToolHandlers(server *mcp.Server, resolver ResolverInterface) {
|
|||||||
},
|
},
|
||||||
resolver.AddVendorRiskAssessmentTool,
|
resolver.AddVendorRiskAssessmentTool,
|
||||||
)
|
)
|
||||||
|
mcp.AddTool(
|
||||||
|
server,
|
||||||
|
&mcp.Tool{
|
||||||
|
Name: "deleteVendor",
|
||||||
|
Description: "Delete a vendor",
|
||||||
|
InputSchema: types.DeleteVendorToolInputSchema,
|
||||||
|
OutputSchema: types.DeleteVendorToolOutputSchema,
|
||||||
|
Annotations: &mcp.ToolAnnotations{
|
||||||
|
DestructiveHint: boolPtr(true),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
resolver.DeleteVendorTool,
|
||||||
|
)
|
||||||
mcp.AddTool(
|
mcp.AddTool(
|
||||||
server,
|
server,
|
||||||
&mcp.Tool{
|
&mcp.Tool{
|
||||||
|
|||||||
@@ -766,6 +766,24 @@ components:
|
|||||||
vendor:
|
vendor:
|
||||||
$ref: "#/components/schemas/Vendor"
|
$ref: "#/components/schemas/Vendor"
|
||||||
|
|
||||||
|
DeleteVendorInput:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- id
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
$ref: "#/components/schemas/GID"
|
||||||
|
description: Vendor ID
|
||||||
|
|
||||||
|
DeleteVendorOutput:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- deleted_vendor_id
|
||||||
|
properties:
|
||||||
|
deleted_vendor_id:
|
||||||
|
$ref: "#/components/schemas/GID"
|
||||||
|
description: Deleted vendor ID
|
||||||
|
|
||||||
GetUserInput:
|
GetUserInput:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
@@ -6394,6 +6412,15 @@ tools:
|
|||||||
$ref: "#/components/schemas/AddVendorRiskAssessmentInput"
|
$ref: "#/components/schemas/AddVendorRiskAssessmentInput"
|
||||||
outputSchema:
|
outputSchema:
|
||||||
$ref: "#/components/schemas/AddVendorRiskAssessmentOutput"
|
$ref: "#/components/schemas/AddVendorRiskAssessmentOutput"
|
||||||
|
- name: deleteVendor
|
||||||
|
description: Delete a vendor
|
||||||
|
hints:
|
||||||
|
readonly: false
|
||||||
|
destructive: true
|
||||||
|
inputSchema:
|
||||||
|
$ref: "#/components/schemas/DeleteVendorInput"
|
||||||
|
outputSchema:
|
||||||
|
$ref: "#/components/schemas/DeleteVendorOutput"
|
||||||
- name: listRisks
|
- name: listRisks
|
||||||
description: List all risks for the organization
|
description: List all risks for the organization
|
||||||
hints:
|
hints:
|
||||||
|
|||||||
@@ -85,6 +85,8 @@ var (
|
|||||||
DeleteTaskToolOutputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"deleted_task_id":{"type":"string","format":"string"}},"required":["deleted_task_id"]}`)
|
DeleteTaskToolOutputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"deleted_task_id":{"type":"string","format":"string"}},"required":["deleted_task_id"]}`)
|
||||||
DeleteTransferImpactAssessmentToolInputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"id":{"type":"string","format":"string"}},"required":["id"]}`)
|
DeleteTransferImpactAssessmentToolInputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"id":{"type":"string","format":"string"}},"required":["id"]}`)
|
||||||
DeleteTransferImpactAssessmentToolOutputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"deleted_transfer_impact_assessment_id":{"type":"string","format":"string"}},"required":["deleted_transfer_impact_assessment_id"]}`)
|
DeleteTransferImpactAssessmentToolOutputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"deleted_transfer_impact_assessment_id":{"type":"string","format":"string"}},"required":["deleted_transfer_impact_assessment_id"]}`)
|
||||||
|
DeleteVendorToolInputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"id":{"type":"string","format":"string"}},"required":["id"]}`)
|
||||||
|
DeleteVendorToolOutputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"deleted_vendor_id":{"type":"string","format":"string"}},"required":["deleted_vendor_id"]}`)
|
||||||
ExportStateOfApplicabilityPDFToolInputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"id":{"type":"string","format":"string"}},"required":["id"]}`)
|
ExportStateOfApplicabilityPDFToolInputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"id":{"type":"string","format":"string"}},"required":["id"]}`)
|
||||||
ExportStateOfApplicabilityPDFToolOutputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"filename":{"type":"string","description":"Suggested filename for the PDF"},"pdf_base64":{"type":"string","description":"Base64-encoded PDF content"}},"required":["pdf_base64","filename"]}`)
|
ExportStateOfApplicabilityPDFToolOutputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"filename":{"type":"string","description":"Suggested filename for the PDF"},"pdf_base64":{"type":"string","description":"Base64-encoded PDF content"}},"required":["pdf_base64","filename"]}`)
|
||||||
GetApplicabilityStatementToolInputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"id":{"type":"string","format":"string"}},"required":["id"]}`)
|
GetApplicabilityStatementToolInputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"id":{"type":"string","format":"string"}},"required":["id"]}`)
|
||||||
@@ -1531,6 +1533,18 @@ type DeleteTransferImpactAssessmentOutput struct {
|
|||||||
DeletedTransferImpactAssessmentID gid.GID `json:"deleted_transfer_impact_assessment_id"`
|
DeletedTransferImpactAssessmentID gid.GID `json:"deleted_transfer_impact_assessment_id"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteVendorInput represents the schema
|
||||||
|
type DeleteVendorInput struct {
|
||||||
|
// Vendor ID
|
||||||
|
ID gid.GID `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteVendorOutput represents the schema
|
||||||
|
type DeleteVendorOutput struct {
|
||||||
|
// Deleted vendor ID
|
||||||
|
DeletedVendorID gid.GID `json:"deleted_vendor_id"`
|
||||||
|
}
|
||||||
|
|
||||||
// Document represents the schema
|
// Document represents the schema
|
||||||
type Document struct {
|
type Document struct {
|
||||||
// Approver IDs
|
// Approver IDs
|
||||||
|
|||||||
Reference in New Issue
Block a user