Tool: explore_schema
Explores the topology schema via multi-hop BFS traversal from starting label names within a domain schema.
The following code sample shows how to use curl to call the explore_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": "explore_schema", "arguments": { // Provide these details according to the MCP tool specification. } }, "jsonrpc": "2.0", "id": 1 }' |
Input Schema
Request for ExploreSchema.
ExploreSchemaRequest
| JSON representation |
|---|
{ "name": string, "startLabels": [ string ], "depth": integer, "pageSize": integer, "pageToken": string } |
| Fields | |
|---|---|
name |
Required. The name of the singleton domain schema resource. Format: |
startLabels[] |
Optional. Starting label names to begin traversal. Substring, case-insensitive matches are performed against allowed label names in the schema. A maximum of 10 |
depth |
Optional. The maximum depth of BFS traversal hops to perform from the starting node types or label names. Defaults to 0 if unspecified. |
pageSize |
Optional. The maximum number of schema elements to return in a single page.
|
pageToken |
Optional. A page token received from a previous When paginating, all other parameters (except page_size) provided to |
Output Schema
Response for ExploreSchema.
ExploreSchemaResponse
| JSON representation |
|---|
{ "nodeTypes": [ { object ( |
| Fields | |
|---|---|
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. |
nextPageToken |
A token to retrieve the next page of results, or empty if there are no more results in the traversal set. |
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: ❌