We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/get-convex/convex-backend'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
syntax = "proto3";
package common;
import "google/protobuf/empty.proto";
message ValidatedPathAndArgs {
optional string path = 1;
optional bytes args = 2;
optional string npm_version = 3;
optional ComponentPath component_path = 4;
optional string component_id = 5;
}
message ValidatedHttpPath {
optional string path = 1;
optional ComponentPath component_path = 22;
optional string component_id = 3;
optional string npm_version = 4;
}
message ComponentPath {
repeated string path = 1;
}
message ResolvedDocument {
ResolvedDocumentId id = 1;
optional double creation_time = 2;
optional bytes value = 3;
}
message ResolvedDocumentId {
TabletIdAndTableNumber table = 1;
optional bytes internal_id = 2;
}
message DeveloperDocumentId {
optional uint32 table_number = 1;
optional bytes internal_id = 2;
}
message DocumentUpdate {
ResolvedDocumentId id = 3;
ResolvedDocument old_document = 1;
ResolvedDocument new_document = 2;
}
message DocumentUpdateWithPrevTs {
ResolvedDocumentId id = 3;
ResolvedDocument old_document = 1;
// `old_ts` should be present iff `old_document` is present
optional uint64 old_ts = 4;
ResolvedDocument new_document = 2;
}
message TabletIdAndTableNumber {
optional bytes table_id = 1;
optional uint32 table_number = 2;
}
message FunctionResult {
oneof result {
string json_packed_value = 1;
JsError js_error = 2;
}
}
message JsError {
optional string message = 1;
optional bytes custom_data = 2;
JsFrames frames = 3;
}
message JsFrames {
repeated FrameData frames = 1;
}
message FrameData {
optional string type_name = 1;
optional string function_name = 2;
optional string method_name = 3;
optional string file_name = 4;
optional uint32 line_number = 5;
optional uint32 column_number = 6;
optional string eval_origin = 7;
optional bool is_top_level = 8;
optional bool is_eval = 9;
optional bool is_native = 10;
optional bool is_constructor = 11;
optional bool is_async = 12;
optional bool is_promise_all = 13;
optional uint32 promise_index = 14;
}
message ExecutionContext {
optional string parent_scheduled_job = 1;
optional string parent_scheduled_job_component_id = 5;
optional string request_id = 2;
optional string execution_id = 3;
optional bool is_root = 4;
}
enum UdfType {
QUERY = 0;
MUTATION = 1;
ACTION = 2;
HTTP_ACTION = 3;
}
// Only construct this via
// `impl From<RepeatableTimestamp> for RepeatableTimestampProto`
// to guarantee validation. When deserializing, we assume it was serialized
// from a valid RepeatableTimestamp, and we can use it for reading from the
// persistence leader (not necessarily the follower).
message RepeatableTimestamp {
optional uint64 ts = 1;
}
message ClientVersion {
// NOTE: We serialize as string for time being instead of encoding the full enum.
optional string client = 1;
ClientVersionIdent version = 2;
}
message ClientVersionIdent {
oneof version {
string semver = 1;
string unrecognized = 2;
}
}
message FunctionCaller {
oneof caller {
ClientVersion sync_worker = 1;
ClientVersion http_api = 2;
ClientVersion tester = 3;
google.protobuf.Empty http_endpoint = 4;
google.protobuf.Empty cron = 5;
SchedulerFunctionCaller scheduler = 6;
ActionFunctionCaller action = 7;
}
}
message SchedulerFunctionCaller {
common.DeveloperDocumentId job_id = 1;
optional string component_id = 2;
}
message ActionFunctionCaller {
common.DeveloperDocumentId parent_scheduled_job = 1;
optional string component_id = 2;
optional string parent_execution_id = 3;
}
message RedactedJsError {
common.JsError error = 1;
optional bool block_logging = 2;
optional string request_id = 3;
}
message RedactedLogLines {
repeated string log_lines = 1;
}
message FieldPath {
repeated string fields = 1;
}
message Interval {
bytes start_inclusive = 1;
oneof end {
bytes exclusive = 2;
google.protobuf.Empty after_all = 3;
}
}
message HttpActionRequestHead {
repeated HttpHeader http_headers = 1;
string url = 2;
string method = 3;
}
message HttpActionResponseHead {
uint32 status = 1;
repeated HttpHeader http_headers = 2;
}
message HttpHeader {
string key = 1;
// HTTP header values can contain non-ASCII bytes.
bytes value = 2;
}
message HttpActionResponse {
oneof message_type {
HttpActionResponseHead head = 1;
bytes body = 2;
}
}
message ExecuteQueryTimestamp {
oneof ts {
google.protobuf.Empty latest = 1;
uint64 at = 2;
}
}