Skip to main content
Glama

Convex MCP server

Official
by get-convex
deploymentAuditLogTable.ts5.68 kB
import { defineTable } from "convex/server"; import { v } from "convex/values"; import { snapshotImportFormat, snapshotImportMode, snapshotImportRequestor, } from "./snapshotImport"; const createEnvironmentVariable = v.object({ action: v.literal("create_environment_variable"), member_id: v.int64(), metadata: v.object({ variable_name: v.string(), }), }); const deleteEnvironmentVariable = v.object({ action: v.literal("delete_environment_variable"), member_id: v.int64(), metadata: v.object({ variable_name: v.string(), }), }); const updateEnvironmentVariable = v.object({ action: v.literal("update_environment_variable"), member_id: v.int64(), metadata: v.object({ variable_name: v.string(), }), }); const replaceEnvironmentVariable = v.object({ action: v.literal("replace_environment_variable"), member_id: v.int64(), metadata: v.object({ previous_variable_name: v.string(), variable_name: v.string(), }), }); const updateCanonicalUrl = v.object({ action: v.literal("update_canonical_url"), member_id: v.string(), metadata: v.object({ request_destination: v.string(), url: v.string(), }), }); const deleteCanonicalUrl = v.object({ action: v.literal("delete_canonical_url"), member_id: v.string(), metadata: v.object({ request_destination: v.string(), }), }); const databaseIndex = v.object({ name: v.optional(v.string()), type: v.literal("database"), fields: v.array(v.string()), }); const searchIndex = v.object({ name: v.optional(v.string()), type: v.literal("search"), searchField: v.string(), filterFields: v.array(v.string()), }); const vectorIndex = v.object({ name: v.optional(v.string()), type: v.literal("vector"), vectorField: v.string(), filterFields: v.array(v.string()), dimensions: v.number(), }); export const indexMetadata = v.union(databaseIndex, searchIndex, vectorIndex); const indexConfigs = v.array(v.union(databaseIndex, searchIndex, vectorIndex)); export const buildIndexes = v.object({ action: v.literal("build_indexes"), member_id: v.int64(), metadata: v.object({ added_indexes: indexConfigs, removed_indexes: indexConfigs, }), }); export const indexDiff = v.object({ added_indexes: indexConfigs, removed_indexes: indexConfigs, }); export const authDiff = v.object({ added: v.array(v.string()), removed: v.array(v.string()), }); const serverVersion = v.union( v.null(), v.object({ previous_version: v.string(), next_version: v.string(), }), ); const moduleDiff = v.object({ added: v.array(v.string()), removed: v.array(v.string()), }); export const cronDiffType = v.optional( v.object({ added: v.array(v.string()), updated: v.array(v.string()), deleted: v.array(v.string()), }), ); export const schemaDiffType = v.optional( v.union( v.null(), v.object({ previous_schema_id: v.union(v.id("_schemas"), v.null()), next_schema_id: v.union(v.id("_schemas"), v.null()), previous_schema: v.optional(v.union(v.string(), v.null())), next_schema: v.optional(v.union(v.string(), v.null())), }), ), ); export const pushConfig = v.object({ action: v.literal("push_config"), member_id: v.int64(), metadata: v.object({ auth: authDiff, server_version: serverVersion, modules: moduleDiff, crons: cronDiffType, schema: schemaDiffType, }), }); export const componentDiff = v.object({ diffType: v.object({ type: v.union( v.literal("create"), v.literal("modify"), v.literal("unmount"), v.literal("remount"), ), }), indexDiff: v.optional(indexDiff), udfConfigDiff: serverVersion, moduleDiff: moduleDiff, cronDiff: cronDiffType, schemaDiff: schemaDiffType, }); export const pushConfigWithComponents = v.object({ action: v.literal("push_config_with_components"), member_id: v.int64(), metadata: v.object({ auth_diff: v.optional(authDiff), component_diffs: v.array( v.object({ component_path: v.union(v.string(), v.null()), component_diff: componentDiff, }), ), }), }); export const deploymentState = v.union( v.literal("paused"), v.literal("running"), v.literal("disabled"), ); export const changeDeploymentState = v.object({ action: v.literal("change_deployment_state"), member_id: v.union(v.int64(), v.null()), metadata: v.object({ old_state: deploymentState, new_state: deploymentState, }), }); export const clearTables = v.object({ action: v.literal("clear_tables"), member_id: v.union(v.int64(), v.null()), metadata: v.object({}), }); export const snapshotImport = v.object({ action: v.literal("snapshot_import"), member_id: v.union(v.int64(), v.null()), metadata: v.object({ table_names: v.array( v.object({ component: v.union(v.null(), v.string()), table_names: v.array(v.string()), }), ), table_count: v.int64(), import_mode: snapshotImportMode, import_format: snapshotImportFormat, requestor: snapshotImportRequestor, table_names_deleted: v.array( v.object({ component: v.union(v.null(), v.string()), table_names: v.array(v.string()), }), ), table_count_deleted: v.int64(), }), }); const deploymentAuditLogTable = defineTable( v.union( createEnvironmentVariable, deleteEnvironmentVariable, updateEnvironmentVariable, replaceEnvironmentVariable, updateCanonicalUrl, deleteCanonicalUrl, buildIndexes, pushConfig, pushConfigWithComponents, changeDeploymentState, clearTables, snapshotImport, ), ); export default deploymentAuditLogTable;

MCP directory API

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