Files
master-ai/platform/contracts/tool-registry.yaml
mawkone b6d7148ded Initial commit: Product OS platform
- Control Plane API with Gemini integration
- Executors: Deploy, Analytics, Marketing
- MCP Adapter for Continue integration
- VSCode/VSCodium extension
- Tool registry and run tracking
- In-memory storage for local dev
- Terraform infrastructure setup
2026-01-19 20:34:43 -08:00

399 lines
10 KiB
YAML

version: 1
tools:
# ----------------------------
# CODE / DEPLOYMENT
# ----------------------------
cloudrun.deploy_service:
description: Build and deploy a Cloud Run service using Cloud Build. Returns the service URL and deployed revision.
risk: medium
executor:
kind: http
url: https://deploy-executor-REPLACE.a.run.app
path: /execute/cloudrun/deploy
inputSchema:
type: object
additionalProperties: false
required: [service_name, repo, ref, env, region]
properties:
service_name:
type: string
minLength: 1
description: Cloud Run service name.
repo:
type: string
minLength: 1
description: Git repo URL (HTTPS).
ref:
type: string
minLength: 1
description: Git ref (branch/tag/SHA).
env:
type: string
enum: [dev, staging, prod]
region:
type: string
minLength: 1
description: GCP region for the Cloud Run service (e.g., us-central1).
outputSchema:
type: object
properties:
service_url:
type: string
revision:
type: string
cloudrun.get_service_status:
description: Fetch Cloud Run service status including latest revision and URL.
risk: low
executor:
kind: http
url: https://deploy-executor-REPLACE.a.run.app
path: /execute/cloudrun/status
inputSchema:
type: object
additionalProperties: false
required: [service_name, region]
properties:
service_name:
type: string
minLength: 1
region:
type: string
minLength: 1
outputSchema:
type: object
properties:
service_name:
type: string
region:
type: string
service_url:
type: string
latest_ready_revision:
type: string
status:
type: string
enum: [ready, deploying, error, unknown]
logs.tail:
description: Tail recent logs for a Cloud Run service or for a specific run_id.
risk: low
executor:
kind: http
url: https://observability-executor-REPLACE.a.run.app
path: /execute/logs/tail
inputSchema:
type: object
additionalProperties: false
required: [scope, limit]
properties:
scope:
type: string
enum: [service, run]
service_name:
type: string
region:
type: string
run_id:
type: string
limit:
type: integer
minimum: 1
maximum: 2000
default: 200
outputSchema:
type: object
properties:
lines:
type: array
items:
type: object
properties:
timestamp:
type: string
severity:
type: string
text:
type: string
# ----------------------------
# COMPANY BRAIN (BRAND + STYLE)
# ----------------------------
brand.get_profile:
description: Retrieve the tenant's brand profile (voice, tone, positioning, compliance constraints).
risk: low
executor:
kind: http
url: https://firestore-executor-REPLACE.a.run.app
path: /execute/brand/get_profile
inputSchema:
type: object
additionalProperties: false
required: [profile_id]
properties:
profile_id:
type: string
minLength: 1
description: Brand profile identifier (e.g., "default").
outputSchema:
type: object
properties:
profile_id:
type: string
brand:
type: object
brand.update_profile:
description: Update the tenant's brand profile. Write operations should be validated and audited.
risk: medium
executor:
kind: http
url: https://firestore-executor-REPLACE.a.run.app
path: /execute/brand/update_profile
inputSchema:
type: object
additionalProperties: false
required: [profile_id, patch]
properties:
profile_id:
type: string
minLength: 1
patch:
type: object
description: Partial update object; executor must validate allowed fields.
outputSchema:
type: object
properties:
ok:
type: boolean
updated_at:
type: string
# ----------------------------
# ANALYTICS / CAUSATION
# ----------------------------
analytics.funnel_summary:
description: Return funnel metrics for a time window. Uses curated events in BigQuery.
risk: low
executor:
kind: http
url: https://analytics-executor-REPLACE.a.run.app
path: /execute/analytics/funnel_summary
inputSchema:
type: object
additionalProperties: false
required: [range_days, funnel]
properties:
range_days:
type: integer
minimum: 1
maximum: 365
funnel:
type: object
required: [name, steps]
properties:
name:
type: string
steps:
type: array
minItems: 2
items:
type: object
required: [event_name]
properties:
event_name:
type: string
outputSchema:
type: object
properties:
funnel_name:
type: string
range_days:
type: integer
steps:
type: array
analytics.top_drivers:
description: Identify top correlated drivers for a target metric/event.
risk: low
executor:
kind: http
url: https://analytics-executor-REPLACE.a.run.app
path: /execute/analytics/top_drivers
inputSchema:
type: object
additionalProperties: false
required: [range_days, target]
properties:
range_days:
type: integer
minimum: 1
maximum: 365
target:
type: object
required: [metric]
properties:
metric:
type: string
event_name:
type: string
outputSchema:
type: object
properties:
target:
type: object
range_days:
type: integer
drivers:
type: array
analytics.write_insight:
description: Persist an insight object (BigQuery table + Firestore pointer + GCS artifact).
risk: medium
executor:
kind: http
url: https://analytics-executor-REPLACE.a.run.app
path: /execute/analytics/write_insight
inputSchema:
type: object
additionalProperties: false
required: [insight]
properties:
insight:
type: object
required: [type, title, summary, severity, confidence, window, recommendations]
properties:
type:
type: string
enum: [funnel_drop, anomaly, driver, experiment_result, general]
title:
type: string
summary:
type: string
severity:
type: string
enum: [info, low, medium, high, critical]
confidence:
type: number
minimum: 0
maximum: 1
window:
type: object
recommendations:
type: array
outputSchema:
type: object
properties:
insight_id:
type: string
stored:
type: object
# ----------------------------
# MARKETING (GENERATION + PUBLISH)
# ----------------------------
marketing.generate_channel_posts:
description: Generate platform-specific social posts from a campaign brief + brand profile.
risk: low
executor:
kind: http
url: https://marketing-executor-REPLACE.a.run.app
path: /execute/marketing/generate_channel_posts
inputSchema:
type: object
additionalProperties: false
required: [brief, channels, brand_profile_id]
properties:
brand_profile_id:
type: string
brief:
type: object
required: [goal, product, audience, key_points]
properties:
goal:
type: string
product:
type: string
audience:
type: string
key_points:
type: array
items:
type: string
channels:
type: array
items:
type: string
enum: [x, linkedin, facebook, instagram, tiktok, youtube, pinterest, reddit]
variations_per_channel:
type: integer
minimum: 1
maximum: 10
default: 3
outputSchema:
type: object
properties:
channels:
type: array
marketing.publish_missinglettr:
description: Publish or schedule a campaign via Missinglettr.
risk: medium
executor:
kind: http
url: https://marketing-executor-REPLACE.a.run.app
path: /execute/marketing/publish_missinglettr
inputSchema:
type: object
additionalProperties: false
required: [campaign, schedule]
properties:
campaign:
type: object
required: [name, posts]
properties:
name:
type: string
posts:
type: array
items:
type: object
required: [channel, text]
properties:
channel:
type: string
text:
type: string
media_urls:
type: array
items:
type: string
schedule:
type: object
required: [mode]
properties:
mode:
type: string
enum: [now, scheduled]
start_time:
type: string
timezone:
type: string
default: UTC
outputSchema:
type: object
properties:
provider:
type: string
campaign_id:
type: string
status:
type: string
enum: [queued, scheduled, published, failed]