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 |
Required. The name of the singleton domain schema resource. Format: |
Output Schema
Schema is a collection of supported node & edge labels and properties for an overlay.
Schema
| JSON representation |
|---|
{ "name": string, "nodeTypes": [ { object ( |
| Fields | |
|---|---|
name |
Identifier. The resource name of the schema. Format: |
nodeTypes[] |
A list of |
edgeTypes[] |
A list of |
labelProperties[] |
A list of supported labels and corresponding properties. |
edgeRules[] |
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 |
REQUIRED Name of the node type. This name is used to access the node type while defining the schema. |
labels[] |
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 |
A human-readable description of the |
optionalLabels[] |
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 |
REQUIRED Name of the edge type. This name is used to access the edge type while defining the schema. |
labels[] |
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 |
A human-readable description of the |
optionalLabels[] |
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 ( |
| Fields | |
|---|---|
label |
Full qualified name of the label. |
properties[] |
List of properties associated with the label. |
description |
A human-readable description of the label. |
Property
| JSON representation |
|---|
{ "name": string, "description": string, // Union field |
| Fields | |
|---|---|
name |
|
description |
A human-readable description of the |
Union field value. REQUIRED Value type of the property. value can be only one of the following: |
|
stringValue |
StringValue represents a property that has a string value type. |
intValue |
IntValue represents a property that has an integer value type. |
boolValue |
BoolValue represents a property that has a boolean value type. |
doubleValue |
DoubleValue represents a property that has a double value type. |
StringValue
| JSON representation |
|---|
{ "repeated": boolean, "allowedValues": [ string ] } |
| Fields | |
|---|---|
repeated |
OPTIONAL Whether the property is repeated. |
allowedValues[] |
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 |
OPTIONAL Whether the property is repeated. |
allowedValues[] |
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 |
OPTIONAL Whether the property is repeated. |
allowedValues[] |
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 |
OPTIONAL Whether the property is repeated. |
allowedValues[] |
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 |
| Fields | |
|---|---|
edgeType |
Optional. Name of the connected edge type. |
Union field This takes precedence over the |
|
srcNodeType |
Optional. The specific node type name that acts as the source for this edge. |
srcNodeGroup |
Optional. A dynamic group of nodes, defined by label constraints, that can act as the source for this edge. |
Union field This takes precedence over the |
|
destNodeType |
Optional. The specific node type name that acts as the destination for this edge. |
destNodeGroup |
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[] |
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: ❌