Skip to main content
Glama

graph_sync

Idempotent

Upload, validate and publish a privacy-filtered graph snapshot through a bounded synchronization lifecycle; does not inspect the local repository. Compatibility dispatcher; prefer the individually named tool when available. Select operation and its matching payload. Supported operations: graph_project. Effects and required fields depend on that operation.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
payloadYesArguments for the selected operation. Follow its matching oneOf branch; fields and side effects differ by operation.
operationYesExact operation to dispatch; prefer its individually named tool when available.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "operation": {
      -        "const": "graph_project",
      -        "type": "string"
      -      },
      -      "payload": {
      -        "oneOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "changeNarrative": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "added": {
      -                    "maxLength": 600,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "relationships": {
      -                    "maxLength": 600,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "removed": {
      -                    "maxLength": 600,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "updated": {
      -                    "maxLength": 600,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "added",
      -                  "updated",
      -                  "removed",
      -                  "relationships"
      -                ],
      -                "type": "object"
      -              },
      -              "declaredCanonicalBytes": {
      -                "maximum": 67108864,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "declaredChunkCount": {
      -                "maximum": 512,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "declaredEdgeCount": {
      -                "maximum": 250000,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "declaredNodeCount": {
      -                "maximum": 100000,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "declaredProseBytes": {
      -                "maximum": 1048576,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "executionId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              },
      -              "expectedProjectVersion": {
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "idempotencyKey": {
      -                "maxLength": 128,
      -                "minLength": 16,
      -                "pattern": "^[A-Za-z0-9_-]+$",
      -                "type": "string"
      -              },
      -              "mappedRevision": {
      -                "maxLength": 128,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string",
      -                "x-brain-scanner-additive-safe": true
      -              },
      -              "phase": {
      -                "const": "begin",
      -                "type": "string"
      -              },
      -              "projectId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              },
      -              "sessionId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "phase",
      -              "projectId",
      -              "expectedProjectVersion",
      -              "declaredChunkCount",
      -              "declaredCanonicalBytes",
      -              "declaredNodeCount",
      -              "declaredEdgeCount",
      -              "declaredProseBytes",
      -              "idempotencyKey",
      -              "changeNarrative"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "chunkDigest": {
      -                "pattern": "^[0-9a-f]{64}$",
      -                "type": "string"
      -              },
      -              "chunkIndex": {
      -                "maximum": 511,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "chunkSize": {
      -                "maximum": 196608,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "edges": {
      -                "items": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "id": {
      -                      "maxLength": 500,
      -                      "minLength": 1,
      -                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                      "type": "string"
      -                    },
      -                    "label": {
      -                      "maxLength": 240,
      -                      "type": "string"
      -                    },
      -                    "sourceId": {
      -                      "maxLength": 500,
      -                      "minLength": 1,
      -                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "pattern": "^[a-z0-9][a-z0-9_-]*$",
      -                      "type": "string"
      -                    },
      -                    "targetId": {
      -                      "maxLength": 500,
      -                      "minLength": 1,
      -                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                      "type": "string"
      -                    },
      -                    "type": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "pattern": "^[a-z0-9][a-z0-9_-]*$",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "id",
      -                    "sourceId",
      -                    "targetId",
      -                    "type"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 15000,
      -                "type": "array"
      -              },
      -              "executionId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              },
      -              "idempotencyKey": {
      -                "maxLength": 128,
      -                "minLength": 16,
      -                "pattern": "^[A-Za-z0-9_-]+$",
      -                "type": "string"
      -              },
      -              "nodes": {
      -                "items": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "id": {
      -                      "maxLength": 500,
      -                      "minLength": 1,
      -                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                      "type": "string"
      -                    },
      -                    "label": {
      -                      "maxLength": 240,
      -                      "type": "string"
      -                    },
      -                    "localPath": {
      -                      "maxLength": 1000,
      -                      "minLength": 1,
      -                      "type": "string",
      -                      "x-brain-scanner-additive-safe": true
      -                    },
      -                    "mappedBy": {
      -                      "maxLength": 128,
      -                      "minLength": 1,
      -                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                      "type": "string",
      -                      "x-brain-scanner-additive-safe": true
      -                    },
      -                    "parentId": {
      -                      "maxLength": 500,
      -                      "minLength": 1,
      -                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                      "type": "string"
      -                    },
      -                    "relativePath": {
      -                      "maxLength": 500,
      -                      "minLength": 1,
      -                      "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.?($|/))(?!.*[\\\\:])[\\x20-\\x7e]+$",
      -                      "type": "string"
      -                    },
      -                    "spanLines": {
      -                      "maximum": 1000000,
      -                      "minimum": 0,
      -                      "type": "integer",
      -                      "x-brain-scanner-additive-safe": true
      -                    },
      -                    "status": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "pattern": "^[a-z0-9][a-z0-9_-]*$",
      -                      "type": "string"
      -                    },
      -                    "summary": {
      -                      "maxLength": 240,
      -                      "type": "string"
      -                    },
      -                    "tags": {
      -                      "items": {
      -                        "maxLength": 64,
      -                        "minLength": 1,
      -                        "pattern": "^[a-z0-9][a-z0-9_-]*$",
      -                        "type": "string"
      -                      },
      -                      "maxItems": 16,
      -                      "type": "array",
      -                      "uniqueItems": true
      -                    },
      -                    "type": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "pattern": "^[a-z0-9][a-z0-9_-]*$",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "id",
      -                    "type",
      -                    "label",
      -                    "status"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 5000,
      -                "type": "array"
      -              },
      -              "phase": {
      -                "const": "append",
      -                "type": "string"
      -              },
      -              "projectId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              },
      -              "sessionId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              },
      -              "syncId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "phase",
      -              "projectId",
      -              "syncId",
      -              "chunkIndex",
      -              "chunkDigest",
      -              "chunkSize",
      -              "nodes",
      -              "edges",
      -              "idempotencyKey"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "canonicalBytes": {
      -                "maximum": 67108864,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "chunkCount": {
      -                "maximum": 512,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "edgeCount": {
      -                "maximum": 250000,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "executionId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              },
      -              "idempotencyKey": {
      -                "maxLength": 128,
      -                "minLength": 16,
      -                "pattern": "^[A-Za-z0-9_-]+$",
      -                "type": "string"
      -              },
      -              "nodeCount": {
      -                "maximum": 100000,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "orderedChunkDigest": {
      -                "pattern": "^[0-9a-f]{64}$",
      -                "type": "string"
      -              },
      -              "phase": {
      -                "const": "seal",
      -                "type": "string"
      -              },
      -              "projectId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              },
      -              "proseBytes": {
      -                "maximum": 1048576,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "sessionId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              },
      -              "syncId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "phase",
      -              "projectId",
      -              "syncId",
      -              "chunkCount",
      -              "canonicalBytes",
      -              "nodeCount",
      -              "edgeCount",
      -              "proseBytes",
      -              "orderedChunkDigest",
      -              "idempotencyKey"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "executionId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              },
      -              "expectedProjectVersion": {
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "idempotencyKey": {
      -                "maxLength": 128,
      -                "minLength": 16,
      -                "pattern": "^[A-Za-z0-9_-]+$",
      -                "type": "string"
      -              },
      -              "phase": {
      -                "const": "commit",
      -                "type": "string"
      -              },
      -              "projectId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              },
      -              "sealedManifestDigest": {
      -                "pattern": "^[0-9a-f]{64}$",
      -                "type": "string"
      -              },
      -              "sessionId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              },
      -              "syncId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "phase",
      -              "projectId",
      -              "syncId",
      -              "sealedManifestDigest",
      -              "expectedProjectVersion",
      -              "idempotencyKey"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "executionId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              },
      -              "phase": {
      -                "const": "status",
      -                "type": "string"
      -              },
      -              "projectId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              },
      -              "sessionId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              },
      -              "syncId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "phase",
      -              "projectId",
      -              "syncId"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "executionId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              },
      -              "idempotencyKey": {
      -                "maxLength": 128,
      -                "minLength": 16,
      -                "pattern": "^[A-Za-z0-9_-]+$",
      -                "type": "string"
      -              },
      -              "phase": {
      -                "const": "abort",
      -                "type": "string"
      -              },
      -              "projectId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              },
      -              "sessionId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              },
      -              "syncId": {
      -                "maxLength": 200,
      -                "minLength": 1,
      -                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "phase",
      -              "projectId",
      -              "syncId",
      -              "idempotencyKey"
      -            ],
      -            "type": "object"
      -          }
      -        ],
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "operation",
      -      "payload"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "operation": {
      +        "const": "graph_project",
      +        "description": "Select this exact operation; payload must match this branch.",
      +        "type": "string"
      +      },
      +      "payload": {
      +        "oneOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "changeNarrative": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "added": {
      +                    "maxLength": 600,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "relationships": {
      +                    "maxLength": 600,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "removed": {
      +                    "maxLength": 600,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "updated": {
      +                    "maxLength": 600,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "added",
      +                  "updated",
      +                  "removed",
      +                  "relationships"
      +                ],
      +                "type": "object"
      +              },
      +              "declaredCanonicalBytes": {
      +                "maximum": 67108864,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "declaredChunkCount": {
      +                "maximum": 512,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "declaredEdgeCount": {
      +                "maximum": 250000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "declaredNodeCount": {
      +                "maximum": 100000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "declaredProseBytes": {
      +                "maximum": 1048576,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "executionId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              },
      +              "expectedProjectVersion": {
      +                "description": "Current hosted project version from get_project_status; guards against overwriting a newer graph publication.",
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "idempotencyKey": {
      +                "description": "Caller-generated retry key. Reuse the same key and identical payload only to retry the same mutation; use a new key for a new action.",
      +                "maxLength": 128,
      +                "minLength": 16,
      +                "pattern": "^[A-Za-z0-9_-]+$",
      +                "type": "string"
      +              },
      +              "mappedRevision": {
      +                "maxLength": 128,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string",
      +                "x-brain-scanner-additive-safe": true
      +              },
      +              "phase": {
      +                "const": "begin",
      +                "type": "string"
      +              },
      +              "projectId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              },
      +              "sessionId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "phase",
      +              "projectId",
      +              "expectedProjectVersion",
      +              "declaredChunkCount",
      +              "declaredCanonicalBytes",
      +              "declaredNodeCount",
      +              "declaredEdgeCount",
      +              "declaredProseBytes",
      +              "idempotencyKey",
      +              "changeNarrative"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "chunkDigest": {
      +                "pattern": "^[0-9a-f]{64}$",
      +                "type": "string"
      +              },
      +              "chunkIndex": {
      +                "maximum": 511,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "chunkSize": {
      +                "maximum": 196608,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "edges": {
      +                "items": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "id": {
      +                      "maxLength": 500,
      +                      "minLength": 1,
      +                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                      "type": "string"
      +                    },
      +                    "label": {
      +                      "maxLength": 240,
      +                      "type": "string"
      +                    },
      +                    "sourceId": {
      +                      "maxLength": 500,
      +                      "minLength": 1,
      +                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "pattern": "^[a-z0-9][a-z0-9_-]*$",
      +                      "type": "string"
      +                    },
      +                    "targetId": {
      +                      "maxLength": 500,
      +                      "minLength": 1,
      +                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                      "type": "string"
      +                    },
      +                    "type": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "pattern": "^[a-z0-9][a-z0-9_-]*$",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "id",
      +                    "sourceId",
      +                    "targetId",
      +                    "type"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 15000,
      +                "type": "array"
      +              },
      +              "executionId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              },
      +              "idempotencyKey": {
      +                "description": "Caller-generated retry key. Reuse the same key and identical payload only to retry the same mutation; use a new key for a new action.",
      +                "maxLength": 128,
      +                "minLength": 16,
      +                "pattern": "^[A-Za-z0-9_-]+$",
      +                "type": "string"
      +              },
      +              "nodes": {
      +                "items": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "id": {
      +                      "maxLength": 500,
      +                      "minLength": 1,
      +                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                      "type": "string"
      +                    },
      +                    "label": {
      +                      "maxLength": 240,
      +                      "type": "string"
      +                    },
      +                    "localPath": {
      +                      "maxLength": 1000,
      +                      "minLength": 1,
      +                      "type": "string",
      +                      "x-brain-scanner-additive-safe": true
      +                    },
      +                    "mappedBy": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                      "type": "string",
      +                      "x-brain-scanner-additive-safe": true
      +                    },
      +                    "parentId": {
      +                      "maxLength": 500,
      +                      "minLength": 1,
      +                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                      "type": "string"
      +                    },
      +                    "relativePath": {
      +                      "maxLength": 500,
      +                      "minLength": 1,
      +                      "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.?($|/))(?!.*[\\\\:])[\\x20-\\x7e]+$",
      +                      "type": "string"
      +                    },
      +                    "spanLines": {
      +                      "maximum": 1000000,
      +                      "minimum": 0,
      +                      "type": "integer",
      +                      "x-brain-scanner-additive-safe": true
      +                    },
      +                    "status": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "pattern": "^[a-z0-9][a-z0-9_-]*$",
      +                      "type": "string"
      +                    },
      +                    "summary": {
      +                      "maxLength": 240,
      +                      "type": "string"
      +                    },
      +                    "tags": {
      +                      "items": {
      +                        "maxLength": 64,
      +                        "minLength": 1,
      +                        "pattern": "^[a-z0-9][a-z0-9_-]*$",
      +                        "type": "string"
      +                      },
      +                      "maxItems": 16,
      +                      "type": "array",
      +                      "uniqueItems": true
      +                    },
      +                    "type": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "pattern": "^[a-z0-9][a-z0-9_-]*$",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "id",
      +                    "type",
      +                    "label",
      +                    "status"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 5000,
      +                "type": "array"
      +              },
      +              "phase": {
      +                "const": "append",
      +                "type": "string"
      +              },
      +              "projectId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              },
      +              "sessionId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              },
      +              "syncId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "phase",
      +              "projectId",
      +              "syncId",
      +              "chunkIndex",
      +              "chunkDigest",
      +              "chunkSize",
      +              "nodes",
      +              "edges",
      +              "idempotencyKey"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "canonicalBytes": {
      +                "maximum": 67108864,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "chunkCount": {
      +                "maximum": 512,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "edgeCount": {
      +                "maximum": 250000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "executionId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              },
      +              "idempotencyKey": {
      +                "description": "Caller-generated retry key. Reuse the same key and identical payload only to retry the same mutation; use a new key for a new action.",
      +                "maxLength": 128,
      +                "minLength": 16,
      +                "pattern": "^[A-Za-z0-9_-]+$",
      +                "type": "string"
      +              },
      +              "nodeCount": {
      +                "maximum": 100000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "orderedChunkDigest": {
      +                "pattern": "^[0-9a-f]{64}$",
      +                "type": "string"
      +              },
      +              "phase": {
      +                "const": "seal",
      +                "type": "string"
      +              },
      +              "projectId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              },
      +              "proseBytes": {
      +                "maximum": 1048576,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "sessionId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              },
      +              "syncId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "phase",
      +              "projectId",
      +              "syncId",
      +              "chunkCount",
      +              "canonicalBytes",
      +              "nodeCount",
      +              "edgeCount",
      +              "proseBytes",
      +              "orderedChunkDigest",
      +              "idempotencyKey"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "executionId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              },
      +              "expectedProjectVersion": {
      +                "description": "Current hosted project version from get_project_status; guards against overwriting a newer graph publication.",
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "idempotencyKey": {
      +                "description": "Caller-generated retry key. Reuse the same key and identical payload only to retry the same mutation; use a new key for a new action.",
      +                "maxLength": 128,
      +                "minLength": 16,
      +                "pattern": "^[A-Za-z0-9_-]+$",
      +                "type": "string"
      +              },
      +              "phase": {
      +                "const": "commit",
      +                "type": "string"
      +              },
      +              "projectId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              },
      +              "sealedManifestDigest": {
      +                "pattern": "^[0-9a-f]{64}$",
      +                "type": "string"
      +              },
      +              "sessionId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              },
      +              "syncId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "phase",
      +              "projectId",
      +              "syncId",
      +              "sealedManifestDigest",
      +              "expectedProjectVersion",
      +              "idempotencyKey"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "executionId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              },
      +              "phase": {
      +                "const": "status",
      +                "type": "string"
      +              },
      +              "projectId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              },
      +              "sessionId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              },
      +              "syncId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "phase",
      +              "projectId",
      +              "syncId"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "executionId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              },
      +              "idempotencyKey": {
      +                "description": "Caller-generated retry key. Reuse the same key and identical payload only to retry the same mutation; use a new key for a new action.",
      +                "maxLength": 128,
      +                "minLength": 16,
      +                "pattern": "^[A-Za-z0-9_-]+$",
      +                "type": "string"
      +              },
      +              "phase": {
      +                "const": "abort",
      +                "type": "string"
      +              },
      +              "projectId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              },
      +              "sessionId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              },
      +              "syncId": {
      +                "description": "Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.",
      +                "maxLength": 200,
      +                "minLength": 1,
      +                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@+~-]*$",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "phase",
      +              "projectId",
      +              "syncId",
      +              "idempotencyKey"
      +            ],
      +            "type": "object"
      +          }
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "operation",
      +      "payload"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedInput schema / properties / operation / description
      Added value: +"Exact operation to dispatch; prefer its individually named tool when available."
    • addedInput schema / properties / payload / description
      Added value: +"Arguments for the selected operation. Follow its matching oneOf branch; fields and side effects differ by operation."
  2. First observed

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare write (readOnlyHint=false), idempotency, and non-destructiveness. The description adds useful context ('does not inspect the local repository', 'privacy-filtered', 'bounded lifecycle'), but for a tool whose payload encodes a six-phase state machine it discloses nothing about phase ordering, resumability, or what commit/seal actually mutate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then the dispatcher caveat, then the operation selection. Dense but no filler sentences; the closing line is somewhat redundant with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is the weakest area: a deeply nested oneOf across begin/append/seal/commit/status/abort phases is compressed into 'bounded synchronization lifecycle' with no phase enumeration or guidance on ordering. An agent must reverse-engineer the entire protocol from the schema, and the description's framing of operations ('Supported operations: graph_project') understates the actual phase complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the two top-level parameters are documented in the schema itself. The description only restates 'Select operation and its matching payload' and 'Effects and required fields depend on that operation', adding no syntax or lifecycle semantics beyond the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States specific verbs and resource: 'Upload, validate and publish a privacy-filtered graph snapshot through a bounded synchronization lifecycle.' It also frames itself as a 'Compatibility dispatcher' and names the operation (graph_project), which differentiates it from the individually named sync siblings. It stops short of a crisp one-line statement of what the tool uniquely does versus begin/commit_project_sync.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Compatibility dispatcher; prefer the individually named tool when available' gives an explicit when-not-to-use rule and points at alternatives. However it does not say which sibling to pick when (e.g. begin_project_sync vs commit_project_sync), leaving that inference to the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources