1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
syntax = "proto3";
package agent.v1;
import "agent/v1/common.proto";
// Tool info.
message ToolInfo {
string name = 1;
string description = 2;
string parameters_schema = 3; // JSON
}
// List tools request.
message ListToolsRequest {}
// List tools response.
message ListToolsResponse {
repeated ToolInfo tools = 1;
}
// Get tool request.
message GetToolRequest {
string name = 1;
}
// Get tool response.
message GetToolResponse {
ToolInfo tool = 1;
}
// Invoke tool request.
message InvokeToolRequest {
string name = 1;
string arguments = 2; // JSON
}
// Invoke tool response.
message InvokeToolResponse {
string name = 1;
string output = 2; // JSON
}
// Register tool request.
message RegisterToolRequest {
string name = 1;
string description = 2;
string parameters_schema = 3; // JSON
string endpoint = 4; // optional external endpoint URL
}
// Register tool response.
message RegisterToolResponse {}
// Unregister tool request.
message UnregisterToolRequest {
string name = 1;
}
// Unregister tool response.
message UnregisterToolResponse {}
// Tool service.
service ToolService {
rpc ListTools(ListToolsRequest) returns (ListToolsResponse);
rpc GetTool(GetToolRequest) returns (GetToolResponse);
rpc InvokeTool(InvokeToolRequest) returns (InvokeToolResponse);
rpc RegisterTool(RegisterToolRequest) returns (RegisterToolResponse);
rpc UnregisterTool(UnregisterToolRequest) returns (UnregisterToolResponse);
}