syntax = "proto3";

option java_package = "com.soulfiremc.grpc.generated";
option java_multiple_files = true;
option java_outer_classname = "ApiDocsProto";

package soulfire.v1;

import "google/protobuf/descriptor.proto";

message ApiMethodDocs {
  string display_name = 1;
  string description = 2;
  repeated string permissions = 3;
  string scope = 4;
  repeated string preconditions = 5;
  string execution = 6;
  repeated string side_effects = 7;
  // Explicitly publishes a unary method as an MCP tool.
  bool expose_to_mcp = 8;
  // Requires the MCP caller to pass confirm=true. Mandatory for exposed
  // mutation and destructive methods.
  bool mcp_requires_confirmation = 9;
}

message ApiFieldDocs {
  string format = 1;
  string example = 2;
}

extend google.protobuf.MethodOptions {
  ApiMethodDocs api_method = 51001;
}

extend google.protobuf.FieldOptions {
  ApiFieldDocs api_field = 51002;
}
