Skip to main content
Glama

Google API Discovery Service MCP Server

models.py14.6 kB
# generated by fastapi-codegen: # filename: openapi.yaml # timestamp: 2025-06-29T01:54:10+00:00 from __future__ import annotations from enum import Enum from typing import Dict, List, Optional from pydantic import BaseModel, Field class Icons(BaseModel): x16: Optional[str] = Field(None, description='The URL of the 16x16 icon.') x32: Optional[str] = Field(None, description='The URL of the 32x32 icon.') class Item(BaseModel): description: Optional[str] = Field(None, description='The description of this API.') discoveryLink: Optional[str] = Field( None, description='A link to the discovery document.' ) discoveryRestUrl: Optional[str] = Field( None, description='The URL for the discovery REST document.' ) documentationLink: Optional[str] = Field( None, description='A link to human readable documentation for the API.' ) icons: Optional[Icons] = Field( None, description='Links to 16x16 and 32x32 icons representing the API.' ) id: Optional[str] = Field(None, description='The id of this API.') kind: Optional[str] = Field( 'discovery#directoryItem', description='The kind for this response.' ) labels: Optional[List[str]] = Field( None, description='Labels for the status of this API, such as labs or deprecated.', ) name: Optional[str] = Field(None, description='The name of the API.') preferred: Optional[bool] = Field( None, description='True if this version is the preferred version to use.' ) title: Optional[str] = Field(None, description='The title of this API.') version: Optional[str] = Field(None, description='The version of the API.') class DirectoryList(BaseModel): discoveryVersion: Optional[str] = Field( 'v1', description='Indicate the version of the Discovery API used to generate this doc.', ) items: Optional[List[Item]] = Field( None, description='The individual directory entries. One entry per api/version pair.', ) kind: Optional[str] = Field( 'discovery#directoryList', description='The kind for this response.' ) class Annotations(BaseModel): required: Optional[List[str]] = Field( None, description='A list of methods for which this property is required on requests.', ) class MapItem(BaseModel): field_ref: Optional[str] = Field(None, alias='$ref') type_value: Optional[str] = None class Variant(BaseModel): discriminant: Optional[str] = Field( None, description='The name of the type discriminant property.' ) map: Optional[List[MapItem]] = Field( None, description='The map of discriminant value to schema to use for parsing..' ) class JsonSchema(BaseModel): field_ref: Optional[str] = Field( None, alias='$ref', description='A reference to another schema. The value of this property is the "id" of another schema.', ) additionalProperties: Optional[JsonSchema] = Field( None, description='If this is a schema for an object, this property is the schema for any additional properties with dynamic keys on this object.', ) annotations: Optional[Annotations] = Field( None, description='Additional information about this property.' ) description: Optional[str] = Field( None, description='A description of this object.' ) enum: Optional[List[str]] = Field( None, description='Values this parameter may take (if it is an enum).' ) enumDescriptions: Optional[List[str]] = Field( None, description='The descriptions for the enums. Each position maps to the corresponding value in the "enum" array.', ) format: Optional[str] = Field( None, description='An additional regular expression or key that helps constrain the value. For more details see: http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.23', ) id: Optional[str] = Field(None, description='Unique identifier for this schema.') items: Optional[JsonSchema] = Field( None, description='If this is a schema for an array, this property is the schema for each element in the array.', ) location: Optional[str] = Field( None, description='Whether this parameter goes in the query or the path for REST requests.', ) maximum: Optional[str] = Field( None, description='The maximum value of this parameter.' ) minimum: Optional[str] = Field( None, description='The minimum value of this parameter.' ) pattern: Optional[str] = Field( None, description='The regular expression this parameter must conform to. Uses Java 6 regex format: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html', ) properties: Optional[Dict[str, JsonSchema]] = Field( None, description='If this is a schema for an object, list the schema for each property of this object.', ) readOnly: Optional[bool] = Field( None, description='The value is read-only, generated by the service. The value cannot be modified by the client. If the value is included in a POST, PUT, or PATCH request, it is ignored by the service.', ) repeated: Optional[bool] = Field( None, description='Whether this parameter may appear multiple times.' ) required: Optional[bool] = Field( None, description='Whether the parameter is required.' ) type: Optional[str] = Field( None, description='The value type for this schema. A list of values can be found here: http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.1', ) variant: Optional[Variant] = Field( None, description='In a variant data type, the value of one property is used to determine how to interpret the entire entity. Its value must exist in a map of descriminant values to schema names.', ) class Scopes(BaseModel): description: Optional[str] = Field(None, description='Description of scope.') class Oauth2(BaseModel): scopes: Optional[Dict[str, Scopes]] = Field( None, description='Available OAuth 2.0 scopes.' ) class Auth(BaseModel): oauth2: Optional[Oauth2] = Field( None, description='OAuth 2.0 authentication information.' ) class Resumable(BaseModel): multipart: Optional[bool] = Field( True, description='True if this endpoint supports uploading multipart media.' ) path: Optional[str] = Field( None, description='The URI path to be used for upload. Should be used in conjunction with the basePath property at the api-level.', ) class Simple(BaseModel): multipart: Optional[bool] = Field( True, description='True if this endpoint supports upload multipart media.' ) path: Optional[str] = Field( None, description='The URI path to be used for upload. Should be used in conjunction with the basePath property at the api-level.', ) class Protocols(BaseModel): resumable: Optional[Resumable] = Field( None, description='Supports the Resumable Media Upload protocol.' ) simple: Optional[Simple] = Field( None, description='Supports uploading as a single HTTP request.' ) class MediaUpload(BaseModel): accept: Optional[List[str]] = Field( None, description='MIME Media Ranges for acceptable media uploads to this method.', ) maxSize: Optional[str] = Field( None, description='Maximum size of a media upload, such as "1MB", "2GB" or "3TB".', ) protocols: Optional[Protocols] = Field( None, description='Supported upload protocols.' ) class Request(BaseModel): field_ref: Optional[str] = Field( None, alias='$ref', description='Schema ID for the request schema.' ) parameterName: Optional[str] = Field(None, description='parameter name.') class Response(BaseModel): field_ref: Optional[str] = Field( None, alias='$ref', description='Schema ID for the response schema.' ) class RestMethod(BaseModel): description: Optional[str] = Field(None, description='Description of this method.') etagRequired: Optional[bool] = Field( None, description='Whether this method requires an ETag to be specified. The ETag is sent as an HTTP If-Match or If-None-Match header.', ) flatPath: Optional[str] = Field( None, description='The URI path of this REST method in (RFC 6570) format without level 2 features ({+var}). Supplementary to the path property.', ) httpMethod: Optional[str] = Field( None, description='HTTP method used by this method.' ) id: Optional[str] = Field( None, description='A unique ID for this method. This property can be used to match methods between different versions of Discovery.', ) mediaUpload: Optional[MediaUpload] = Field( None, description='Media upload parameters.' ) parameterOrder: Optional[List[str]] = Field( None, description='Ordered list of required parameters, serves as a hint to clients on how to structure their method signatures. The array is ordered such that the "most-significant" parameter appears first.', ) parameters: Optional[Dict[str, JsonSchema]] = Field( None, description='Details for all parameters in this method.' ) path: Optional[str] = Field( None, description='The URI path of this REST method. Should be used in conjunction with the basePath property at the api-level.', ) request: Optional[Request] = Field(None, description='The schema for the request.') response: Optional[Response] = Field( None, description='The schema for the response.' ) scopes: Optional[List[str]] = Field( None, description='OAuth 2.0 scopes applicable to this method.' ) supportsMediaDownload: Optional[bool] = Field( None, description='Whether this method supports media downloads.' ) supportsMediaUpload: Optional[bool] = Field( None, description='Whether this method supports media uploads.' ) supportsSubscription: Optional[bool] = Field( None, description='Whether this method supports subscriptions.' ) useMediaDownloadService: Optional[bool] = Field( None, description='Indicates that downloads from this method should use the download service URL (i.e. "/download"). Only applies if the method supports media download.', ) class RestResource(BaseModel): methods: Optional[Dict[str, RestMethod]] = Field( None, description='Methods on this resource.' ) resources: Optional[Dict[str, RestResource]] = Field( None, description='Sub-resources on this resource.' ) class Alt(Enum): json = 'json' class RestDescription(BaseModel): auth: Optional[Auth] = Field(None, description='Authentication information.') basePath: Optional[str] = Field( None, description='[DEPRECATED] The base path for REST requests.' ) baseUrl: Optional[str] = Field( None, description='[DEPRECATED] The base URL for REST requests.' ) batchPath: Optional[str] = Field( None, description='The path for REST batch requests.' ) canonicalName: Optional[str] = Field( None, description='Indicates how the API name should be capitalized and split into various parts. Useful for generating pretty class names.', ) description: Optional[str] = Field(None, description='The description of this API.') discoveryVersion: Optional[str] = Field( 'v1', description='Indicate the version of the Discovery API used to generate this doc.', ) documentationLink: Optional[str] = Field( None, description='A link to human readable documentation for the API.' ) etag: Optional[str] = Field(None, description='The ETag for this response.') exponentialBackoffDefault: Optional[bool] = Field( None, description='Enable exponential backoff for suitable methods in the generated clients.', ) features: Optional[List[str]] = Field( None, description='A list of supported features for this API.' ) icons: Optional[Icons] = Field( None, description='Links to 16x16 and 32x32 icons representing the API.' ) id: Optional[str] = Field(None, description='The ID of this API.') kind: Optional[str] = Field( 'discovery#restDescription', description='The kind for this response.' ) labels: Optional[List[str]] = Field( None, description='Labels for the status of this API, such as labs or deprecated.', ) methods: Optional[Dict[str, RestMethod]] = Field( None, description='API-level methods for this API.' ) name: Optional[str] = Field(None, description='The name of this API.') ownerDomain: Optional[str] = Field( None, description='The domain of the owner of this API. Together with the ownerName and a packagePath values, this can be used to generate a library for this API which would have a unique fully qualified name.', ) ownerName: Optional[str] = Field( None, description='The name of the owner of this API. See ownerDomain.' ) packagePath: Optional[str] = Field( None, description='The package of the owner of this API. See ownerDomain.' ) parameters: Optional[Dict[str, JsonSchema]] = Field( None, description='Common parameters that apply across all apis.' ) protocol: Optional[str] = Field( 'rest', description='The protocol described by this document.' ) resources: Optional[Dict[str, RestResource]] = Field( None, description='The resources in this API.' ) revision: Optional[str] = Field(None, description='The version of this API.') rootUrl: Optional[str] = Field( None, description='The root URL under which all API services live.' ) schemas: Optional[Dict[str, JsonSchema]] = Field( None, description='The schemas for this API.' ) servicePath: Optional[str] = Field( None, description='The base path for all REST requests.' ) title: Optional[str] = Field(None, description='The title of this API.') version: Optional[str] = Field(None, description='The version of this API.') version_module: Optional[bool] = None JsonSchema.model_rebuild() RestResource.model_rebuild()

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ag2-mcp-servers/api-discovery-service'

If you have feedback or need assistance with the MCP directory API, please join our Discord server