Files
probo/pkg/server/api/mcp/v1/specification.yaml
Bryan Frimin 72a6d33535 Add framework tools
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-23 21:08:55 +01:00

1135 lines
28 KiB
YAML

info:
title: Probo MCP Server
version: 1.0.0
description: Probo MCP Server API
components:
schemas:
OrderDirection:
type: string
enum:
- asc
- desc
go.probo.inc/mcpgen/type: go.probo.inc/probo/pkg/page.OrderDirection
VendorOrderField:
type: string
enum:
- CREATED_AT
- UPDATED_AT
- NAME
go.probo.inc/mcpgen/type: go.probo.inc/probo/pkg/coredata.VendorOrderField
VendorOrderBy:
type: object
required:
- field
- direction
properties:
field:
$ref: "#/components/schemas/VendorOrderField"
description: Vendor order field
direction:
$ref: "#/components/schemas/OrderDirection"
description: Vendor order direction
PeopleOrderBy:
type: object
required:
- field
- direction
properties:
field:
$ref: "#/components/schemas/PeopleOrderField"
description: People order field
direction:
$ref: "#/components/schemas/OrderDirection"
description: People order direction
PeopleOrderField:
type: string
enum:
- CREATED_AT
- FULL_NAME
- KIND
go.probo.inc/mcpgen/type: go.probo.inc/probo/pkg/coredata.PeopleOrderField
PeopleKind:
type: string
enum:
- EMPLOYEE
- CONTRACTOR
- SERVICE_ACCOUNT
go.probo.inc/mcpgen/type: go.probo.inc/probo/pkg/coredata.PeopleKind
People:
type: object
required:
- id
- organization_id
- full_name
- primary_email_address
- additional_email_addresses
- kind
- created_at
- updated_at
properties:
id:
$ref: "#/components/schemas/GID"
description: People ID
organization_id:
$ref: "#/components/schemas/GID"
description: Organization ID
full_name:
type: string
description: Full name
primary_email_address:
type: string
description: Primary email address
additional_email_addresses:
type: array
items:
type: string
description: Additional email addresses
kind:
$ref: "#/components/schemas/PeopleKind"
description: People kind
position:
type:
- string
- "null"
description: Position
contract_start_date:
type:
- string
- "null"
format: date-time
description: Contract start date
contract_end_date:
type:
- string
- "null"
format: date-time
description: Contract end date
created_at:
type: string
format: date-time
description: Creation timestamp
updated_at:
type: string
format: date-time
description: Update timestamp
ListPeopleInput:
type: object
required:
- organization_id
properties:
organization_id:
$ref: "#/components/schemas/GID"
description: Organization ID
order_by:
$ref: "#/components/schemas/PeopleOrderBy"
description: People order by
size:
type: integer
description: Page size
cursor:
$ref: "#/components/schemas/CursorKey"
description: Page cursor
filter:
type: object
properties:
exclude_contract_ended:
type: boolean
description: Exclude people with ended contracts
ListPeopleOutput:
type: object
required:
- people
properties:
next_cursor:
$ref: "#/components/schemas/CursorKey"
description: Next cursor
people:
type: array
items:
$ref: "#/components/schemas/People"
GID:
type: string
format: string
go.probo.inc/mcpgen/type: go.probo.inc/probo/pkg/gid.GID
CursorKey:
type: string
format: string
go.probo.inc/mcpgen/type: go.probo.inc/probo/pkg/page.CursorKey
ListOrganizationsInput:
type: object
properties:
organization_id:
$ref: "#/components/schemas/GID"
description: Organization ID
ListOrganizationsOutput:
type: object
properties:
organizations:
type: array
items:
$ref: "#/components/schemas/Organization"
Organization:
type: object
required:
- id
- name
- description
- created_at
- updated_at
properties:
id:
$ref: "#/components/schemas/GID"
description: Organization ID
name:
type: string
description: Organization name
description:
type:
- string
- "null"
description: Organization description
created_at:
type: string
format: date-time
description: Creation timestamp
updated_at:
type: string
format: date-time
description: Update timestamp
ListVendorsInput:
type: object
required:
- organization_id
properties:
organization_id:
$ref: "#/components/schemas/GID"
description: Organization ID
order_by:
$ref: "#/components/schemas/VendorOrderBy"
description: Vendor order by
size:
type: integer
description: Page size
cursor:
$ref: "#/components/schemas/CursorKey"
description: Page cursor
filter:
type: object
properties:
snapshot_id:
$ref: "#/components/schemas/GID"
description: Snapshot ID
ListVendorsOutput:
type: object
required:
- vendors
properties:
next_cursor:
$ref: "#/components/schemas/CursorKey"
description: Next cursor
vendors:
type: array
items:
$ref: "#/components/schemas/Vendor"
Vendor:
type: object
required:
- id
- name
- organization_id
- created_at
- updated_at
properties:
id:
$ref: "#/components/schemas/GID"
description: Vendor ID
name:
type: string
description: Vendor name
organization_id:
$ref: "#/components/schemas/GID"
description: Organization ID
description:
type:
- string
- "null"
description: Vendor description
created_at:
type: string
format: date-time
description: Creation timestamp
updated_at:
type: string
format: date-time
description: Update timestamp
AddVendorInput:
type: object
required:
- organization_id
- name
properties:
organization_id:
$ref: "#/components/schemas/GID"
description: Organization ID
name:
type: string
description: Vendor name
description:
type: string
description: Vendor description
created_at:
type: string
format: date-time
description: Creation timestamp
updated_at:
type: string
format: date-time
description: Update timestamp
AddVendorOutput:
type: object
required:
- vendor
properties:
vendor:
$ref: "#/components/schemas/Vendor"
UpdateVendorInput:
type: object
required:
- id
properties:
id:
$ref: "#/components/schemas/GID"
description: Vendor ID
name:
type: string
description: Vendor name
description:
type: string
description: Vendor description
UpdateVendorOutput:
type: object
required:
- vendor
properties:
vendor:
$ref: "#/components/schemas/Vendor"
GetPeopleInput:
type: object
required:
- id
properties:
id:
$ref: "#/components/schemas/GID"
description: People ID
GetPeopleOutput:
type: object
required:
- people
properties:
people:
$ref: "#/components/schemas/People"
AddPeopleInput:
type: object
required:
- organization_id
- full_name
- primary_email_address
- kind
properties:
organization_id:
$ref: "#/components/schemas/GID"
description: Organization ID
full_name:
type: string
description: Full name
primary_email_address:
type: string
description: Primary email address
additional_email_addresses:
type: array
items:
type: string
description: Additional email addresses
kind:
$ref: "#/components/schemas/PeopleKind"
description: People kind
position:
type: string
description: Position
contract_start_date:
type: string
format: date-time
description: Contract start date
contract_end_date:
type: string
format: date-time
description: Contract end date
AddPeopleOutput:
type: object
required:
- people
properties:
people:
$ref: "#/components/schemas/People"
RiskOrderField:
type: string
enum:
- CREATED_AT
- UPDATED_AT
- NAME
- CATEGORY
- TREATMENT
- INHERENT_RISK_SCORE
- RESIDUAL_RISK_SCORE
- OWNER_FULL_NAME
go.probo.inc/mcpgen/type: go.probo.inc/probo/pkg/coredata.RiskOrderField
RiskOrderBy:
type: object
required:
- field
- direction
properties:
field:
$ref: "#/components/schemas/RiskOrderField"
description: Risk order field
direction:
$ref: "#/components/schemas/OrderDirection"
description: Risk order direction
RiskTreatment:
type: string
enum:
- MITIGATED
- ACCEPTED
- AVOIDED
- TRANSFERRED
go.probo.inc/mcpgen/type: go.probo.inc/probo/pkg/coredata.RiskTreatment
Risk:
type: object
required:
- id
- organization_id
- name
- category
- treatment
- inherent_likelihood
- inherent_impact
- inherent_risk_score
- residual_likelihood
- residual_impact
- residual_risk_score
- note
- created_at
- updated_at
properties:
id:
$ref: "#/components/schemas/GID"
description: Risk ID
organization_id:
$ref: "#/components/schemas/GID"
description: Organization ID
snapshot_id:
type:
- string
- "null"
description: Snapshot ID
name:
type: string
description: Risk name
description:
type:
- string
- "null"
description: Risk description
category:
type: string
description: Risk category
treatment:
$ref: "#/components/schemas/RiskTreatment"
description: Risk treatment
inherent_likelihood:
type: integer
description: Inherent likelihood
inherent_impact:
type: integer
description: Inherent impact
inherent_risk_score:
type: integer
description: Inherent risk score
residual_likelihood:
type: integer
description: Residual likelihood
residual_impact:
type: integer
description: Residual impact
residual_risk_score:
type: integer
description: Residual risk score
note:
type: string
description: Risk note
owner_id:
type:
- string
- "null"
description: Owner ID
created_at:
type: string
format: date-time
description: Creation timestamp
updated_at:
type: string
format: date-time
description: Update timestamp
ListRisksInput:
type: object
required:
- organization_id
properties:
organization_id:
$ref: "#/components/schemas/GID"
description: Organization ID
order_by:
$ref: "#/components/schemas/RiskOrderBy"
description: Risk order by
size:
type: integer
description: Page size
cursor:
$ref: "#/components/schemas/CursorKey"
description: Page cursor
filter:
type: object
properties:
query:
type: string
description: Search query
snapshot_id:
$ref: "#/components/schemas/GID"
description: Snapshot ID
ListRisksOutput:
type: object
required:
- risks
properties:
next_cursor:
$ref: "#/components/schemas/CursorKey"
description: Next cursor
risks:
type: array
items:
$ref: "#/components/schemas/Risk"
GetRiskInput:
type: object
required:
- id
properties:
id:
$ref: "#/components/schemas/GID"
description: Risk ID
GetRiskOutput:
type: object
required:
- risk
properties:
risk:
$ref: "#/components/schemas/Risk"
AddRiskInput:
type: object
required:
- organization_id
- name
- category
- treatment
- inherent_likelihood
- inherent_impact
properties:
organization_id:
$ref: "#/components/schemas/GID"
description: Organization ID
name:
type: string
description: Risk name
description:
type: string
description: Risk description
category:
type: string
description: Risk category
owner_id:
$ref: "#/components/schemas/GID"
description: Owner ID
treatment:
$ref: "#/components/schemas/RiskTreatment"
description: Risk treatment
inherent_likelihood:
type: integer
description: Inherent likelihood
inherent_impact:
type: integer
description: Inherent impact
residual_likelihood:
type: integer
description: Residual likelihood
residual_impact:
type: integer
description: Residual impact
note:
type: string
description: Risk note
AddRiskOutput:
type: object
required:
- risk
properties:
risk:
$ref: "#/components/schemas/Risk"
UpdateRiskInput:
type: object
required:
- id
properties:
id:
$ref: "#/components/schemas/GID"
description: Risk ID
name:
type: string
description: Risk name
description:
type: ["string", "null"]
description: Risk description
go.probo.inc/mcpgen/omittable: true
category:
type: string
description: Risk category
owner_id:
anyOf:
- type: string
$ref: "#/components/schemas/GID"
- type: "null"
description: Owner ID
go.probo.inc/mcpgen/omittable: true
treatment:
$ref: "#/components/schemas/RiskTreatment"
description: Risk treatment
inherent_likelihood:
type: integer
description: Inherent likelihood
inherent_impact:
type: integer
description: Inherent impact
residual_likelihood:
type: integer
description: Residual likelihood
residual_impact:
type: integer
description: Residual impact
note:
type: string
description: Risk note
UpdateRiskOutput:
type: object
required:
- risk
properties:
risk:
$ref: "#/components/schemas/Risk"
MeasureState:
type: string
enum:
- NOT_STARTED
- IN_PROGRESS
- NOT_APPLICABLE
- IMPLEMENTED
go.probo.inc/mcpgen/type: go.probo.inc/probo/pkg/coredata.MeasureState
MeasureOrderField:
type: string
enum:
- CREATED_AT
- NAME
go.probo.inc/mcpgen/type: go.probo.inc/probo/pkg/coredata.MeasureOrderField
MeasureOrderBy:
type: object
required:
- field
- direction
properties:
field:
$ref: "#/components/schemas/MeasureOrderField"
description: Measure order field
direction:
$ref: "#/components/schemas/OrderDirection"
description: Measure order direction
Measure:
type: object
required:
- id
- category
- name
- state
- created_at
- updated_at
properties:
id:
$ref: "#/components/schemas/GID"
description: Measure ID
category:
type: string
description: Measure category
name:
type: string
description: Measure name
description:
type:
- string
- "null"
description: Measure description
state:
$ref: "#/components/schemas/MeasureState"
description: Measure state
created_at:
type: string
format: date-time
description: Creation timestamp
updated_at:
type: string
format: date-time
description: Update timestamp
ListMeasuresInput:
type: object
required:
- organization_id
properties:
organization_id:
$ref: "#/components/schemas/GID"
description: Organization ID
order_by:
$ref: "#/components/schemas/MeasureOrderBy"
description: Measure order by
size:
type: integer
description: Page size
cursor:
$ref: "#/components/schemas/CursorKey"
description: Page cursor
filter:
type: object
properties:
query:
type: string
description: Search query
state:
$ref: "#/components/schemas/MeasureState"
description: Measure state filter
ListMeasuresOutput:
type: object
required:
- measures
properties:
next_cursor:
$ref: "#/components/schemas/CursorKey"
description: Next cursor
measures:
type: array
items:
$ref: "#/components/schemas/Measure"
GetMeasureInput:
type: object
required:
- id
properties:
id:
$ref: "#/components/schemas/GID"
description: Measure ID
GetMeasureOutput:
type: object
required:
- measure
properties:
measure:
$ref: "#/components/schemas/Measure"
AddMeasureInput:
type: object
required:
- organization_id
- name
- category
properties:
organization_id:
$ref: "#/components/schemas/GID"
description: Organization ID
name:
type: string
description: Measure name
description:
type: string
description: Measure description
category:
type: string
description: Measure category
AddMeasureOutput:
type: object
required:
- measure
properties:
measure:
$ref: "#/components/schemas/Measure"
UpdateMeasureInput:
type: object
required:
- id
properties:
id:
$ref: "#/components/schemas/GID"
description: Measure ID
name:
type: string
description: Measure name
description:
type: ["string", "null"]
description: Measure description
go.probo.inc/mcpgen/omittable: true
category:
type: string
description: Measure category
state:
$ref: "#/components/schemas/MeasureState"
description: Measure state
UpdateMeasureOutput:
type: object
required:
- measure
properties:
measure:
$ref: "#/components/schemas/Measure"
FrameworkOrderField:
type: string
enum:
- CREATED_AT
go.probo.inc/mcpgen/type: go.probo.inc/probo/pkg/coredata.FrameworkOrderField
FrameworkOrderBy:
type: object
required:
- field
- direction
properties:
field:
$ref: "#/components/schemas/FrameworkOrderField"
description: Framework order field
direction:
$ref: "#/components/schemas/OrderDirection"
description: Framework order direction
Framework:
type: object
required:
- id
- organization_id
- name
- created_at
- updated_at
properties:
id:
$ref: "#/components/schemas/GID"
description: Framework ID
organization_id:
$ref: "#/components/schemas/GID"
description: Organization ID
name:
type: string
description: Framework name
description:
type:
- string
- "null"
description: Framework description
created_at:
type: string
format: date-time
description: Creation timestamp
updated_at:
type: string
format: date-time
description: Update timestamp
ListFrameworksInput:
type: object
required:
- organization_id
properties:
organization_id:
$ref: "#/components/schemas/GID"
description: Organization ID
order_by:
$ref: "#/components/schemas/FrameworkOrderBy"
description: Framework order by
size:
type: integer
description: Page size
cursor:
$ref: "#/components/schemas/CursorKey"
description: Page cursor
ListFrameworksOutput:
type: object
required:
- frameworks
properties:
next_cursor:
$ref: "#/components/schemas/CursorKey"
description: Next cursor
frameworks:
type: array
items:
$ref: "#/components/schemas/Framework"
GetFrameworkInput:
type: object
required:
- id
properties:
id:
$ref: "#/components/schemas/GID"
description: Framework ID
GetFrameworkOutput:
type: object
required:
- framework
properties:
framework:
$ref: "#/components/schemas/Framework"
AddFrameworkInput:
type: object
required:
- organization_id
- name
properties:
organization_id:
$ref: "#/components/schemas/GID"
description: Organization ID
name:
type: string
description: Framework name
description:
type: string
description: Framework description
AddFrameworkOutput:
type: object
required:
- framework
properties:
framework:
$ref: "#/components/schemas/Framework"
UpdateFrameworkInput:
type: object
required:
- id
properties:
id:
$ref: "#/components/schemas/GID"
description: Framework ID
name:
type: string
description: Framework name
description:
type: ["string", "null"]
description: Framework description
go.probo.inc/mcpgen/omittable: true
UpdateFrameworkOutput:
type: object
required:
- framework
properties:
framework:
$ref: "#/components/schemas/Framework"
tools:
- name: listOrganizations
description: List all organizations the user has access to
readonly: true
inputSchema:
$ref: "#/components/schemas/ListOrganizationsInput"
outputSchema:
$ref: "#/components/schemas/ListOrganizationsOutput"
- name: listVendors
description: List all vendors for the organization
readonly: true
inputSchema:
$ref: "#/components/schemas/ListVendorsInput"
outputSchema:
$ref: "#/components/schemas/ListVendorsOutput"
- name: listPeople
description: List all people for the organization
readonly: true
inputSchema:
$ref: "#/components/schemas/ListPeopleInput"
outputSchema:
$ref: "#/components/schemas/ListPeopleOutput"
- name: addVendor
description: Add a new vendor to the organization
readonly: false
inputSchema:
$ref: "#/components/schemas/AddVendorInput"
outputSchema:
$ref: "#/components/schemas/AddVendorOutput"
- name: updateVendor
description: Update an existing vendor
readonly: false
inputSchema:
$ref: "#/components/schemas/UpdateVendorInput"
outputSchema:
$ref: "#/components/schemas/UpdateVendorOutput"
- name: getPeople
description: Get a people by ID
readonly: true
inputSchema:
$ref: "#/components/schemas/GetPeopleInput"
outputSchema:
$ref: "#/components/schemas/GetPeopleOutput"
- name: addPeople
description: Add a new people to the organization
readonly: false
inputSchema:
$ref: "#/components/schemas/AddPeopleInput"
outputSchema:
$ref: "#/components/schemas/AddPeopleOutput"
- name: listRisks
description: List all risks for the organization
readonly: true
inputSchema:
$ref: "#/components/schemas/ListRisksInput"
outputSchema:
$ref: "#/components/schemas/ListRisksOutput"
- name: getRisk
description: Get a risk by ID
readonly: true
inputSchema:
$ref: "#/components/schemas/GetRiskInput"
outputSchema:
$ref: "#/components/schemas/GetRiskOutput"
- name: addRisk
description: Add a new risk to the organization
readonly: false
inputSchema:
$ref: "#/components/schemas/AddRiskInput"
outputSchema:
$ref: "#/components/schemas/AddRiskOutput"
- name: updateRisk
description: Update an existing risk
readonly: false
inputSchema:
$ref: "#/components/schemas/UpdateRiskInput"
outputSchema:
$ref: "#/components/schemas/UpdateRiskOutput"
- name: listMeasures
description: List all measures for the organization
readonly: true
inputSchema:
$ref: "#/components/schemas/ListMeasuresInput"
outputSchema:
$ref: "#/components/schemas/ListMeasuresOutput"
- name: getMeasure
description: Get a measure by ID
readonly: true
inputSchema:
$ref: "#/components/schemas/GetMeasureInput"
outputSchema:
$ref: "#/components/schemas/GetMeasureOutput"
- name: addMeasure
description: Add a new measure to the organization
readonly: false
inputSchema:
$ref: "#/components/schemas/AddMeasureInput"
outputSchema:
$ref: "#/components/schemas/AddMeasureOutput"
- name: updateMeasure
description: Update an existing measure
readonly: false
inputSchema:
$ref: "#/components/schemas/UpdateMeasureInput"
outputSchema:
$ref: "#/components/schemas/UpdateMeasureOutput"
- name: listFrameworks
description: List all frameworks for the organization
readonly: true
inputSchema:
$ref: "#/components/schemas/ListFrameworksInput"
outputSchema:
$ref: "#/components/schemas/ListFrameworksOutput"
- name: getFramework
description: Get a framework by ID
readonly: true
inputSchema:
$ref: "#/components/schemas/GetFrameworkInput"
outputSchema:
$ref: "#/components/schemas/GetFrameworkOutput"
- name: addFramework
description: Add a new framework to the organization
readonly: false
inputSchema:
$ref: "#/components/schemas/AddFrameworkInput"
outputSchema:
$ref: "#/components/schemas/AddFrameworkOutput"
- name: updateFramework
description: Update an existing framework
readonly: false
inputSchema:
$ref: "#/components/schemas/UpdateFrameworkInput"
outputSchema:
$ref: "#/components/schemas/UpdateFrameworkOutput"