MCP Tools Reference: apihub.googleapis.com

Tool: list_api_operations

List operations in an API version.

The following sample demonstrate how to use curl to invoke the list_api_operations MCP tool.

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

Where, REGION is the supported API hub region. For more information, see Supported regions.

Input Schema

The ListApiOperations method's request.

ListApiOperationsRequest

JSON representation
{
  "parent": string,
  "filter": string,
  "pageSize": integer,
  "pageToken": string
}
Fields
parent

string

Required. The parent which owns this collection of operations i.e., the API version. Format: projects/{project}/locations/{location}/apis/{api}/versions/{version}

filter

string

Optional. An expression that filters the list of ApiOperations.

A filter expression consists of a field name, a comparison operator, and a value for filtering. The value must be a string or a boolean. The comparison operator must be one of: <, > or =. Filters are not case sensitive.

The following fields in the ApiOperation are eligible for filtering: * name - The ApiOperation resource name. Allowed comparison operators: =. * details.http_operation.path.path - The http operation's complete path relative to server endpoint. Allowed comparison operators: =. * details.http_operation.method - The http operation method type. Allowed comparison operators: =. * details.deprecated - Indicates if the ApiOperation is deprecated. Allowed values are True / False indicating the deprycation status of the ApiOperation. Allowed comparison operators: =. * create_time - The time at which the ApiOperation was created. The value should be in the (RFC3339)[https://tools.ietf.org/html/rfc3339] format. Allowed comparison operators: > and <. * attributes.projects/test-project-id/locations/test-location-id/ attributes/user-defined-attribute-id.enum_values.values.id - The allowed value id of the user defined enum attribute associated with the Resource. Allowed comparison operator is :. Here user-defined-attribute-enum-id is a placeholder that can be replaced with any user defined enum attribute name. * attributes.projects/test-project-id/locations/test-location-id/ attributes/user-defined-attribute-id.enum_values.values.display_name - The allowed value display name of the user defined enum attribute associated with the Resource. Allowed comparison operator is :. Here user-defined-attribute-enum-display-name is a placeholder that can be replaced with any user defined enum attribute enum name. * attributes.projects/test-project-id/locations/test-location-id/ attributes/user-defined-attribute-id.string_values.values - The allowed value of the user defined string attribute associated with the Resource. Allowed comparison operator is :. Here user-defined-attribute-string is a placeholder that can be replaced with any user defined string attribute name. * attributes.projects/test-project-id/locations/test-location-id/ attributes/user-defined-attribute-id.json_values.values - The allowed value of the user defined JSON attribute associated with the Resource. Allowed comparison operator is :. Here user-defined-attribute-json is a placeholder that can be replaced with any user defined JSON attribute name.

Expressions are combined with either AND logic operator or OR logical operator but not both of them together i.e. only one of the AND or OR operator can be used throughout the filter string and both the operators cannot be used together. No other logical operators are supported. At most three filter fields are allowed in the filter string and if provided more than that then INVALID_ARGUMENT error is returned by the API.

Here are a few examples:

  • details.deprecated = True - The ApiOperation is deprecated.
  • details.http_operation.method = GET AND create_time < \"2021-08-15T14:50:00Z\" AND create_time > \"2021-08-10T12:00:00Z\" - The method of the http operation of the ApiOperation is GET and the spec was created before 2021-08-15 14:50:00 UTC and after 2021-08-10 12:00:00 UTC.
  • details.http_operation.method = GET OR details.http_operation.method = POST. - The http operation of the method of ApiOperation is GET or POST.
  • details.deprecated = True AND attributes.projects/test-project-id/locations/test-location-id/ attributes/17650f90-4a29-4971-b3c0-d5532da3764b.string_values.values: test - The filter string specifies that the ApiOperation is deprecated and the value of the user defined attribute of type string is test.
pageSize

integer

Optional. The maximum number of operations to return. The service may return fewer than this value. If unspecified, at most 50 operations will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.

pageToken

string

Optional. A page token, received from a previous ListApiOperations call. Provide this to retrieve the subsequent page.

When paginating, all other parameters (except page_size) provided to ListApiOperations must match the call that provided the page token.

Output Schema

The ListApiOperations method's response.

ListApiOperationsResponse

JSON representation
{
  "apiOperations": [
    {
      object (ApiOperation)
    }
  ],
  "nextPageToken": string
}
Fields
apiOperations[]

object (ApiOperation)

The operations corresponding to an API version.

nextPageToken

string

A token, which can be sent as page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.

ApiOperation

JSON representation
{
  "name": string,
  "spec": string,
  "details": {
    object (OperationDetails)
  },
  "createTime": string,
  "updateTime": string,
  "attributes": {
    string: {
      object (AttributeValues)
    },
    ...
  },
  "sourceMetadata": [
    {
      object (SourceMetadata)
    }
  ]
}
Fields
name

string

Identifier. The name of the operation.

Format: projects/{project}/locations/{location}/apis/{api}/versions/{version}/operations/{operation}

spec

string

Output only. The name of the spec will be of the format: projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec} Note:The name of the spec will be empty if the operation is created via CreateApiOperation API.

details

object (OperationDetails)

Optional. Operation details. Note: Even though this field is optional, it is required for CreateApiOperation API and we will fail the request if not provided.

createTime

string (Timestamp format)

Output only. The time at which the operation was created.

Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" or "2014-10-02T15:01:23+05:30".

updateTime

string (Timestamp format)

Output only. The time at which the operation was last updated.

Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" or "2014-10-02T15:01:23+05:30".

attributes

map (key: string, value: object (AttributeValues))

Optional. The list of user defined attributes associated with the API operation resource. The key is the attribute name. It will be of the format: projects/{project}/locations/{location}/attributes/{attribute}. The value is the attribute values associated with the resource.

An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

sourceMetadata[]

object (SourceMetadata)

Output only. The list of sources and metadata from the sources of the API operation.

OperationDetails

JSON representation
{
  "description": string,
  "documentation": {
    object (Documentation)
  },
  "deprecated": boolean,

  // Union field operation can be only one of the following:
  "httpOperation": {
    object (HttpOperation)
  },
  "mcpTool": {
    object (McpTool)
  }
  // End of list of possible types for union field operation.
}
Fields
description

string

Optional. Description of the operation behavior. For OpenAPI spec, this will map to operation.description in the spec, in case description is empty, operation.summary will be used.

documentation

object (Documentation)

Optional. Additional external documentation for this operation. For OpenAPI spec, this will map to operation.documentation in the spec.

deprecated

boolean

Optional. For OpenAPI spec, this will be set if operation.deprecatedis marked as true in the spec.

Union field operation.

operation can be only one of the following:

httpOperation

object (HttpOperation)

The HTTP Operation.

mcpTool

object (McpTool)

The MCP Tool Operation.

HttpOperation

JSON representation
{
  "path": {
    object (Path)
  },
  "method": enum (Method)
}
Fields
path

object (Path)

Optional. The path details for the Operation. Note: Even though this field is optional, it is required for CreateApiOperation API and we will fail the request if not provided.

method

enum (Method)

Optional. Operation method Note: Even though this field is optional, it is required for CreateApiOperation API and we will fail the request if not provided.

Path

JSON representation
{
  "path": string,
  "description": string
}
Fields
path

string

Optional. Complete path relative to server endpoint. Note: Even though this field is optional, it is required for CreateApiOperation API and we will fail the request if not provided.

description

string

Optional. A short description for the path applicable to all operations.

McpTool

JSON representation
{
  "name": string,
  "title": string,
  "description": string,
  "annotations": {
    object (ToolAnnotations)
  },
  "inputSchema": {
    object (OperationSchema)
  },
  "outputSchema": {
    object (OperationSchema)
  }
}
Fields
name

string

Required. The name of the tool, unique within its parent scope (version).

title

string

Optional. Optional title for the tool.

description

string

Optional. Description of what the tool does.

annotations

object (ToolAnnotations)

Optional. Optional annotations for the tool.

inputSchema

object (OperationSchema)

Optional. Input schema for the operation. This can be parsed only from MCP schema type.

outputSchema

object (OperationSchema)

Optional. Output schema for the operation. This can be parsed only from MCP schema type.

ToolAnnotations

JSON representation
{
  "title": string,
  "additionalHints": {
    string: string,
    ...
  },

  // Union field _read_only_hint can be only one of the following:
  "readOnlyHint": boolean
  // End of list of possible types for union field _read_only_hint.

  // Union field _destructive_hint can be only one of the following:
  "destructiveHint": boolean
  // End of list of possible types for union field _destructive_hint.

  // Union field _idempotent_hint can be only one of the following:
  "idempotentHint": boolean
  // End of list of possible types for union field _idempotent_hint.

  // Union field _open_world_hint can be only one of the following:
  "openWorldHint": boolean
  // End of list of possible types for union field _open_world_hint.
}
Fields
title

string

Optional. A human-readable title for the tool (if different from Tool.title).

additionalHints

map (key: string, value: string)

Optional. Additional hints which may help tools and not covered in defaults.

An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

Union field _read_only_hint.

_read_only_hint can be only one of the following:

readOnlyHint

boolean

Optional. Hint indicating if the tool is read-only.

Union field _destructive_hint.

_destructive_hint can be only one of the following:

destructiveHint

boolean

Optional. Hint indicating if the tool may have destructive side effects.

Union field _idempotent_hint.

_idempotent_hint can be only one of the following:

idempotentHint

boolean

Optional. Hint indicating if the tool is idempotent.

Union field _open_world_hint.

_open_world_hint can be only one of the following:

openWorldHint

boolean

Optional. Hint indicating if the tool interacts with the open world (e.g., internet).

AdditionalHintsEntry

JSON representation
{
  "key": string,
  "value": string
}
Fields
key

string

value

string

OperationSchema

JSON representation
{

  // Union field value can be only one of the following:
  "jsonSchema": {
    object
  }
  // End of list of possible types for union field value.
}
Fields
Union field value. The value of the schema. value can be only one of the following:
jsonSchema

object (Struct format)

The JSON schema. Only valid JSON is accepted but semantic validation of schema is not supported right now.

Struct

JSON representation
{
  "fields": {
    string: value,
    ...
  }
}
Fields
fields

map (key: string, value: value (Value format))

Unordered map of dynamically typed values.

An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

FieldsEntry

JSON representation
{
  "key": string,
  "value": value
}
Fields
key

string

value

value (Value format)

Value

JSON representation
{

  // Union field kind can be only one of the following:
  "nullValue": null,
  "numberValue": number,
  "stringValue": string,
  "boolValue": boolean,
  "structValue": {
    object
  },
  "listValue": array
  // End of list of possible types for union field kind.
}
Fields
Union field kind. The kind of value. kind can be only one of the following:
nullValue

null

Represents a JSON null.

numberValue

number

Represents a JSON number. Must not be NaN, Infinity or -Infinity, since those are not supported in JSON. This also cannot represent large Int64 values, since JSON format generally does not support them in its number type.

stringValue

string

Represents a JSON string.

boolValue

boolean

Represents a JSON boolean (true or false literal in JSON).

structValue

object (Struct format)

Represents a JSON object.

listValue

array (ListValue format)

Represents a JSON array.

ListValue

JSON representation
{
  "values": [
    value
  ]
}
Fields
values[]

value (Value format)

Repeated field of dynamically typed values.

Documentation

JSON representation
{
  "externalUri": string
}
Fields
externalUri

string

Optional. The uri of the externally hosted documentation.

Timestamp

JSON representation
{
  "seconds": string,
  "nanos": integer
}
Fields
seconds

string (int64 format)

Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be between -62135596800 and 253402300799 inclusive (which corresponds to 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z).

nanos

integer

Non-negative fractions of a second at nanosecond resolution. This field is the nanosecond portion of the duration, not an alternative to seconds. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be between 0 and 999,999,999 inclusive.

AttributesEntry

JSON representation
{
  "key": string,
  "value": {
    object (AttributeValues)
  }
}
Fields
key

string

value

object (AttributeValues)

AttributeValues

JSON representation
{
  "attribute": string,

  // Union field Value can be only one of the following:
  "enumValues": {
    object (EnumAttributeValues)
  },
  "stringValues": {
    object (StringAttributeValues)
  },
  "jsonValues": {
    object (StringAttributeValues)
  },
  "uriValues": {
    object (StringAttributeValues)
  }
  // End of list of possible types for union field Value.
}
Fields
attribute

string

Output only. The name of the attribute. Format: projects/{project}/locations/{location}/attributes/{attribute}

Union field Value. The attribute values associated with the resource. Value can be only one of the following:
enumValues

object (EnumAttributeValues)

The attribute values associated with a resource in case attribute data type is enum.

stringValues

object (StringAttributeValues)

The attribute values associated with a resource in case attribute data type is string.

jsonValues

object (StringAttributeValues)

The attribute values associated with a resource in case attribute data type is JSON.

uriValues

object (StringAttributeValues)

The attribute values associated with a resource in case attribute data type is URL, URI or IP, like gs://bucket-name/object-name.

EnumAttributeValues

JSON representation
{
  "values": [
    {
      object (AllowedValue)
    }
  ]
}
Fields
values[]

object (AllowedValue)

Required. The attribute values in case attribute data type is enum.

AllowedValue

JSON representation
{
  "id": string,
  "displayName": string,
  "description": string,
  "immutable": boolean
}
Fields
id

string

Required. The ID of the allowed value. * If provided, the same will be used. The service will throw an error if the specified id is already used by another allowed value in the same attribute resource. * If not provided, a system generated id derived from the display name will be used. In this case, the service will handle conflict resolution by adding a system generated suffix in case of duplicates.

This value should be 4-63 characters, and valid characters are /[a-z][0-9]-/.

displayName

string

Required. The display name of the allowed value.

description

string

Optional. The detailed description of the allowed value.

immutable

boolean

Optional. When set to true, the allowed value cannot be updated or deleted by the user. It can only be true for System defined attributes.

StringAttributeValues

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

string

Required. The attribute values in case attribute data type is string or JSON.

SourceMetadata

JSON representation
{
  "sourceType": enum (SourceType),
  "originalResourceId": string,
  "originalResourceCreateTime": string,
  "originalResourceUpdateTime": string,

  // Union field source can be only one of the following:
  "pluginInstanceActionSource": {
    object (PluginInstanceActionSource)
  }
  // End of list of possible types for union field source.
}
Fields
sourceType

enum (SourceType)

Output only. The type of the source.

originalResourceId

string

Output only. The unique identifier of the resource at the source.

originalResourceCreateTime

string (Timestamp format)

Output only. The time at which the resource was created at the source.

Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" or "2014-10-02T15:01:23+05:30".

originalResourceUpdateTime

string (Timestamp format)

Output only. The time at which the resource was last updated at the source.

Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" or "2014-10-02T15:01:23+05:30".

Union field source. The source of the resource. source can be only one of the following:
pluginInstanceActionSource

object (PluginInstanceActionSource)

Output only. The source of the resource is a plugin instance action.

PluginInstanceActionSource

JSON representation
{
  "pluginInstance": string,
  "actionId": string
}
Fields
pluginInstance

string

Output only. The resource name of the source plugin instance. Format is projects/{project}/locations/{location}/plugins/{plugin}/instances/{instance}

actionId

string

Output only. The id of the plugin instance action.

Tool Annotations

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