Files
probo/pkg/server/api/mcp/v1/specification.yaml
Bryan Frimin dfd924abeb Add tools and update authenticztion and RBAC
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-21 10:22:01 +01:00

450 lines
11 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"
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"