{
  "openapi": "3.1.0",
  "info": {
    "title": "Descubrimiento público de Cuentix",
    "version": "1.0.0",
    "description": "Referencia de los dos endpoints públicos de descubrimiento OAuth del conector MCP. Solo lectura, sin autenticación y sin datos de empresas. Cuentix permite a las personas preparar, revisar y presentar sus propios impuestos. Los datos de empresas requieren autorización del usuario mediante el conector MCP existente, fuera de esta especificación. Esta especificación no es un manifiesto de plugin ni cambia las herramientas de ChatGPT."
  },
  "servers": [
    {
      "url": "https://www.cuentixapp.com",
      "description": "Origen canónico del conector en producción"
    }
  ],
  "externalDocs": {
    "url": "https://cuentix.mx/desarrolladores",
    "description": "Documentación para desarrolladores"
  },
  "security": [],
  "paths": {
    "/.well-known/oauth-authorization-server": {
      "get": {
        "operationId": "getAuthorizationServerMetadata",
        "summary": "Consultar metadatos del servidor de autorización",
        "description": "Devuelve únicamente metadatos públicos de descubrimiento. Las direcciones de autorización, registro o tokens son valores informativos; sus operaciones quedan fuera de esta especificación. Los permisos anunciados pueden cambiar según las capacidades activas del conector.",
        "responses": {
          "200": {
            "description": "Metadatos públicos del conector",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationServerMetadata"
                }
              }
            }
          },
          "503": {
            "description": "El conector está deshabilitado o no está disponible",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorUnavailable"
                }
              }
            }
          }
        }
      }
    },
    "/.well-known/oauth-protected-resource/api/mcp": {
      "get": {
        "operationId": "getProtectedResourceMetadata",
        "summary": "Consultar metadatos del recurso MCP protegido",
        "description": "Devuelve únicamente metadatos públicos de descubrimiento. Las direcciones de autorización, registro o tokens son valores informativos; sus operaciones quedan fuera de esta especificación. Los permisos anunciados pueden cambiar según las capacidades activas del conector.",
        "responses": {
          "200": {
            "description": "Metadatos públicos del conector",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProtectedResourceMetadata"
                }
              }
            }
          },
          "503": {
            "description": "El conector está deshabilitado o no está disponible",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorUnavailable"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AuthorizationServerMetadata": {
        "type": "object",
        "properties": {
          "issuer": {
            "type": "string",
            "format": "uri"
          },
          "authorization_endpoint": {
            "type": "string",
            "format": "uri"
          },
          "token_endpoint": {
            "type": "string",
            "format": "uri"
          },
          "registration_endpoint": {
            "type": "string",
            "format": "uri"
          },
          "revocation_endpoint": {
            "type": "string",
            "format": "uri"
          },
          "response_types_supported": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "grant_types_supported": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "token_endpoint_auth_methods_supported": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "code_challenge_methods_supported": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "scopes_supported": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "client_id_metadata_document_supported": {
            "type": "boolean"
          }
        },
        "required": [
          "issuer",
          "authorization_endpoint",
          "token_endpoint",
          "registration_endpoint",
          "revocation_endpoint",
          "response_types_supported",
          "grant_types_supported",
          "token_endpoint_auth_methods_supported",
          "code_challenge_methods_supported",
          "scopes_supported",
          "client_id_metadata_document_supported"
        ],
        "additionalProperties": true
      },
      "ProtectedResourceMetadata": {
        "type": "object",
        "properties": {
          "resource": {
            "type": "string",
            "format": "uri"
          },
          "resource_name": {
            "type": "string"
          },
          "authorization_servers": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            }
          },
          "scopes_supported": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "bearer_methods_supported": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "resource",
          "resource_name",
          "authorization_servers",
          "scopes_supported",
          "bearer_methods_supported"
        ],
        "additionalProperties": true
      },
      "ConnectorUnavailable": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "enum": [
              "connector_disabled",
              "connector_unconfigured",
              "connector_unavailable"
            ]
          }
        },
        "required": [
          "error"
        ],
        "additionalProperties": false
      }
    }
  }
}
