MCP Tools Reference: apptopology.googleapis.com

Tool: get_schema

GetSchema returns the necessary information to be able to construct filters i.e. a collection of supported node and edge labels and properties for an domain.

The following code sample shows how to use curl to call the get_schema MCP tool.

Curl Request
curl --location 'https://apptopology.googleapis.com/mcp' \
--header 'content-type: application/json' \
--header 'accept: application/json, text/event-stream' \
--data '{
  "method": "tools/call",
  "params": {
    "name": "get_schema",
    "arguments": {
      // Provide these details according to the MCP tool specification.
    }
  },
  "jsonrpc": "2.0",
  "id": 1
}'

Input Schema

Request for GetSchema.

GetSchemaRequest

JSON representation
{
  "name": string
}
Fields
name

string

Required. The name of the singleton domain schema resource. Format: projects/{project}/locations/{location}/domains/{domain}/schema

Output Schema

Schema is a collection of supported node & edge labels and properties for an overlay.

Schema

JSON representation
{
  "name": string,
  "nodeTypes": [
    {
      object (NodeType)
    }
  ],
  "edgeTypes": [
    {
      object (EdgeType)
    }
  ],
  "labelProperties": [
    {
      object (LabelProperties)
    }
  ],
  "edgeRules": [
    {
      object (EdgeRule)
    }
  ]
}
Fields
name

string

Identifier. The resource name of the schema. Format: projects/{project}/locations/{location}/domains/{domain}/schema

nodeTypes[]

object (NodeType)

A list of NodeTypes defined within this schema. Refer to the documentation of NodeType for more details.

edgeTypes[]

object (EdgeType)

A list of EdgeTypes defined within this schema. Refer to the documentation of EdgeType for more details.

labelProperties[]

object (LabelProperties)

A list of supported labels and corresponding properties.

edgeRules[]

object (EdgeRule)

Edge rules. These will indicate which node types can be connected and through what edge type. This is a list of (source_node_type, edge_type, destination_node_type) tuples.

NodeType

JSON representation
{
  "type": string,
  "labels": [
    string
  ],
  "description": string,
  "optionalLabels": [
    string
  ]
}
Fields
type

string

REQUIRED Name of the node type. This name is used to access the node type while defining the schema.

labels[]

string

Labels attached to the node. Composable, namespaced building blocks that define core attributes through associated properties. Multiple labels aggregate to fully specify the functional traits and property schema of the node type.

description

string

A human-readable description of the NodeType.

optionalLabels[]

string

A node of this node type can have 0 or more of these labels. These node objects of this node type will have these labels alongside the required labels.

EdgeType

JSON representation
{
  "type": string,
  "labels": [
    string
  ],
  "description": string,
  "optionalLabels": [
    string
  ]
}
Fields
type

string

REQUIRED Name of the edge type. This name is used to access the edge type while defining the schema.

labels[]

string

Labels attached to the edge. Composable, namespaced building blocks that define core attributes through associated properties. Multiple labels aggregate to fully specify the functional traits and property schema of the edge type.

description

string

A human-readable description of the EdgeType.

optionalLabels[]

string

An edge of this edge type can have 0 or more of these labels. These edge objects of this edge type will have these labels alongside the required labels.

LabelProperties

JSON representation
{
  "label": string,
  "properties": [
    {
      object (Property)
    }
  ],
  "description": string
}
Fields
label

string

Full qualified name of the label.

properties[]

object (Property)

List of properties associated with the label.

description

string

A human-readable description of the label.

Property

JSON representation
{
  "name": string,
  "description": string,

  // Union field value can be only one of the following:
  "stringValue": {
    object (StringValue)
  },
  "intValue": {
    object (IntValue)
  },
  "boolValue": {
    object (BoolValue)
  },
  "doubleValue": {
    object (DoubleValue)
  }
  // End of list of possible types for union field value.
}
Fields
name

string

name is the key string to identify the property in Nodes & Edges. Examples: ProjectId, Base/displayName etc.

description

string

A human-readable description of the PropertyType, explaining its meaning, purpose, and any constraints or expectations on its value.

Union field value. REQUIRED Value type of the property. value can be only one of the following:
stringValue

object (StringValue)

StringValue represents a property that has a string value type.

intValue

object (IntValue)

IntValue represents a property that has an integer value type.

boolValue

object (BoolValue)

BoolValue represents a property that has a boolean value type.

doubleValue

object (DoubleValue)

DoubleValue represents a property that has a double value type.

StringValue

JSON representation
{
  "repeated": boolean,
  "allowedValues": [
    string
  ]
}
Fields
repeated

boolean

OPTIONAL Whether the property is repeated.

allowedValues[]

string

OPTIONAL Allowed values for the property. If provided, the property value must be one of the allowed values.

IntValue

JSON representation
{
  "repeated": boolean,
  "allowedValues": [
    string
  ]
}
Fields
repeated

boolean

OPTIONAL Whether the property is repeated.

allowedValues[]

string (int64 format)

OPTIONAL Allowed values for the property. If provided, the property value must be one of the allowed values.

BoolValue

JSON representation
{
  "repeated": boolean,
  "allowedValues": [
    boolean
  ]
}
Fields
repeated

boolean

OPTIONAL Whether the property is repeated.

allowedValues[]

boolean

OPTIONAL Allowed values for the property. If provided, the property value must be one of the allowed values.

DoubleValue

JSON representation
{
  "repeated": boolean,
  "allowedValues": [
    number
  ]
}
Fields
repeated

boolean

OPTIONAL Whether the property is repeated.

allowedValues[]

number

OPTIONAL Allowed values for the property. If provided, the property value must be one of the allowed values.

EdgeRule

JSON representation
{
  "edgeType": string,

  // Union field source_node can be only one of the following:
  "srcNodeType": string,
  "srcNodeGroup": {
    object (NodeGroup)
  }
  // End of list of possible types for union field source_node.

  // Union field destination_node can be only one of the following:
  "destNodeType": string,
  "destNodeGroup": {
    object (NodeGroup)
  }
  // End of list of possible types for union field destination_node.
}
Fields
edgeType

string

Optional. Name of the connected edge type.

Union field source_node. Specifies the source criteria for this edge rule. An edge rule must define its source either statically via a specific node type, or dynamically via a group of nodes that match given constraints.

This takes precedence over the source_node_type field. source_node can be only one of the following:

srcNodeType

string

Optional. The specific node type name that acts as the source for this edge.

srcNodeGroup

object (NodeGroup)

Optional. A dynamic group of nodes, defined by label constraints, that can act as the source for this edge.

Union field destination_node. Specifies the destination criteria for this edge rule. An edge rule must define its destination either statically via a specific node type, or dynamically via a group of nodes that match given constraints.

This takes precedence over the destination_node_type field. destination_node can be only one of the following:

destNodeType

string

Optional. The specific node type name that acts as the destination for this edge.

destNodeGroup

object (NodeGroup)

Optional. A dynamic group of nodes, defined by label constraints, that can act as the destination for this edge.

NodeGroup

JSON representation
{
  "anyLabels": [
    string
  ]
}
Fields
anyLabels[]

string

Optional. A node must have at least one of these labels to be included in the group. If empty or unset, this constraint is not applied.

Tool Annotations

Tool annotations are sent to MCP clients to describe the basic risk of a given tool. Most clients treat these hints as untrusted, but they can be used to decide when a confirmation prompt might be sent to a user.

Along with the title string, the following boolean hints are defined as follows:

  • readOnlyHint: If true, the tool doesn't modify its environment. Default: false.
  • destructiveHint: If true, then the tool can perform destructive actions. If false, then the tool can only perform additive actions. Default: true.
  • idempotentHint: If true, then calling the tool repeatedly with the same arguments will have no additional effect on its environment. Default: false.
  • openWorldHint: If true, then the tool can interact with an 'open world' of external entities. If false, then the tool can only interact with internal entities. For example, a web search tool would be open world, while a memory tool would not be open world.

Destructive Hint: ❌ | Idempotent Hint: ✅ | Read Only Hint: ✅ | Open World Hint: ❌