La búsqueda solo se carga cuando la usas. Explora todas las categorías a continuación.

Herramienta MCP

Leer menciones de Threads

sosoapi_query_threads_mentions

Leer una página oficial limitada de menciones si esa conexión exacta tiene permiso. El acceso Standard/de prueba está restringido.

Leer en Markdown

Perfiles y transportes

Perfiles: full · Transportes: stdio, http

Elige core o full para controlar qué herramientas ve tu cliente; no cambia sus permisos. La carga de archivos locales requiere stdio y no está disponible por HTTP. Establece SOSOAPI_OUTPUT_SCHEMAS=1 para incluir esquemas de salida en la detección. Las herramientas devuelven resultados estructurados con o sin esa opción.

Permisos y efectos secundarios

Las anotaciones ayudan a los clientes a describir una herramienta. Cada llamada sigue comprobando la autenticación, el rol, el acceso al recurso y los permisos de capacidades del usuario.

{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": true
}

Campos de entrada

Obligatorio significa obligatorio dentro del objeto principal y la rama elegida. Un campo secundario obligatorio no convierte en obligatorio un objeto principal opcional. Las reglas y nombres de campos siguientes se copian del contrato.

Campos de entrada
Campo / ramaTipo / obligatorioRestricciones
$objectObligatorio en el objeto principal
  • additionalProperties: false
workspace_idstringObligatorio en el objeto principal
  • format: "uuid"
social_account_idstringObligatorio en el objeto principal
  • format: "uuid"
sinceintegerOpcional / elemento
  • minimum: 1688540400
  • maximum: 9007199254740991
untilintegerOpcional / elemento
  • minimum: 1688540400
  • maximum: 9007199254740991
limitintegerOpcional / elemento
  • minimum: 1
  • maximum: 100
afterstringOpcional / elemento
  • minLength: 1
  • maxLength: 4096
JSON Schema completo
{
  "type": "object",
  "properties": {
    "workspace_id": {
      "type": "string",
      "format": "uuid"
    },
    "social_account_id": {
      "type": "string",
      "format": "uuid"
    },
    "since": {
      "$ref": "#/$defs/s0"
    },
    "until": {
      "$ref": "#/$defs/s0"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "after": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096
    }
  },
  "required": [
    "workspace_id",
    "social_account_id"
  ],
  "additionalProperties": false,
  "$defs": {
    "s0": {
      "type": "integer",
      "minimum": 1688540400,
      "maximum": 9007199254740991
    }
  }
}

Salida estructurada

Este esquema describe structuredContent en un resultado exitoso de herramienta. La respuesta MCP también incluye content y puede establecer isError si falla una llamada. Para publicación, consulta el resultado final de la publicación en vez de considerar una solicitud aceptada o una respuesta de texto como confirmación. La operación API enlazada explica los permisos y las reglas de reintento.

Obligatorio significa obligatorio dentro del objeto principal y la rama elegida. Un campo secundario obligatorio no convierte en obligatorio un objeto principal opcional. Las reglas y nombres de campos siguientes se copian del contrato.

Salida estructurada
Campo / ramaTipo / obligatorioRestricciones
$objectObligatorio en el objeto principal
  • additionalProperties: false
contract_versionstringObligatorio en el objeto principal
  • const: "threads-reads/v1"
operationstringObligatorio en el objeto principal
  • const: "mentions"
sourcestringObligatorio en el objeto principal
  • const: "official_threads_api"
workspace_idstringObligatorio en el objeto principal
  • format: "uuid"
social_account_idstringObligatorio en el objeto principal
  • format: "uuid"
provider_account_idstringObligatorio en el objeto principal
  • pattern: "^\\d{2,20}$"
provider_app_identitystring | nullObligatorio en el objeto principal—
provider_app_identityanyOf 1stringObligatorio en el objeto principal
  • minLength: 1
  • maxLength: 100
provider_app_identityanyOf 2nullObligatorio en el objeto principal—
oauth_snapshot_idstring | nullObligatorio en el objeto principal—
oauth_snapshot_idanyOf 1stringObligatorio en el objeto principal
  • format: "uuid"
oauth_snapshot_idanyOf 2nullObligatorio en el objeto principal—
fetched_atstringObligatorio en el objeto principal
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
statusstringObligatorio en el objeto principal
  • enum: ["available","partial","unavailable"]
unavailable_reasonstring | nullObligatorio en el objeto principal—
unavailable_reasonanyOf 1stringObligatorio en el objeto principal
  • enum: ["grant_inventory_unknown","missing_permissions","issuing_app_unknown","credential_unavailable","credential_expired","account_unhealthy","provider_denied","provider_rate_limited","provider_unavailable","provider_response_invalid"]
unavailable_reasonanyOf 2nullObligatorio en el objeto principal—
accessobjectObligatorio en el objeto principal
  • additionalProperties: false
access.required_permissionsarrayObligatorio en el objeto principal
  • maxItems: 4
access.required_permissions[]stringOpcional / elemento
  • pattern: "^[a-z][a-z0-9_]{0,99}$"
access.missing_permissionsarrayObligatorio en el objeto principal
  • maxItems: 4
access.missing_permissions[]stringOpcional / elemento
  • pattern: "^[a-z][a-z0-9_]{0,99}$"
access.permission_statestringObligatorio en el objeto principal
  • enum: ["granted","missing","unknown"]
access.grant_evidencestringObligatorio en el objeto principal
  • enum: ["exact","unknown"]
access.app_accessstringObligatorio en el objeto principal
  • const: "unverified"
dataarrayObligatorio en el objeto principal
  • maxItems: 100
data[]objectOpcional / elemento
  • additionalProperties: false
data[].idstringObligatorio en el objeto principal
  • pattern: "^\\d{2,20}$"
data[].textstring | nullObligatorio en el objeto principal—
data[].textanyOf 1stringObligatorio en el objeto principal
  • maxLength: 30000
data[].textanyOf 2nullObligatorio en el objeto principal—
data[].usernamestring | nullObligatorio en el objeto principal—
data[].usernameanyOf 1stringObligatorio en el objeto principal
  • pattern: "^[A-Za-z0-9._]{1,30}$"
data[].usernameanyOf 2nullObligatorio en el objeto principal—
data[].permalinkstring | nullObligatorio en el objeto principal—
data[].permalinkanyOf 1stringObligatorio en el objeto principal
  • format: "uri"
data[].permalinkanyOf 2nullObligatorio en el objeto principal—
data[].timestampstring | nullObligatorio en el objeto principal—
data[].timestampanyOf 1stringObligatorio en el objeto principal
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
data[].timestampanyOf 2nullObligatorio en el objeto principal—
data[].media_typestring | nullObligatorio en el objeto principal—
data[].media_typeanyOf 1stringObligatorio en el objeto principal
  • enum: ["TEXT","TEXT_POST","IMAGE","VIDEO","CAROUSEL_ALBUM","AUDIO","REPOST_FACADE"]
data[].media_typeanyOf 2nullObligatorio en el objeto principal—
data[].is_replyboolean | nullObligatorio en el objeto principal—
data[].is_quote_postboolean | nullObligatorio en el objeto principal—
data[].has_repliesboolean | nullObligatorio en el objeto principal—
data[].root_post_idstring | nullOpcional / elemento—
data[].root_post_idanyOf 1stringOpcional / elemento
  • pattern: "^\\d{2,20}$"
data[].root_post_idanyOf 2nullOpcional / elemento—
data[].replied_to_idstring | nullOpcional / elemento—
data[].replied_to_idanyOf 1stringOpcional / elemento
  • pattern: "^\\d{2,20}$"
data[].replied_to_idanyOf 2nullOpcional / elemento—
profileobject | nullObligatorio en el objeto principal—
profileanyOf 1objectObligatorio en el objeto principal
  • additionalProperties: false
profile.usernameanyOf 1stringObligatorio en el objeto principal
  • pattern: "^[A-Za-z0-9._]{1,30}$"
profile.nameanyOf 1string | nullObligatorio en el objeto principal—
profile.nameanyOf 1 / anyOf 1stringObligatorio en el objeto principal
  • maxLength: 200
profile.nameanyOf 1 / anyOf 2nullObligatorio en el objeto principal—
profile.biographyanyOf 1string | nullObligatorio en el objeto principal—
profile.biographyanyOf 1 / anyOf 1stringObligatorio en el objeto principal
  • maxLength: 2000
profile.biographyanyOf 1 / anyOf 2nullObligatorio en el objeto principal—
profile.is_verifiedanyOf 1boolean | nullObligatorio en el objeto principal—
profile.follower_countanyOf 1integer | nullObligatorio en el objeto principal—
profile.follower_countanyOf 1 / anyOf 1integerObligatorio en el objeto principal
  • minimum: 0
  • maximum: 9007199254740991
profile.follower_countanyOf 1 / anyOf 2nullObligatorio en el objeto principal—
profileanyOf 2nullObligatorio en el objeto principal—
locationsarrayOpcional / elemento
  • maxItems: 100
locations[]objectOpcional / elemento
  • additionalProperties: false
locations[].idstringObligatorio en el objeto principal
  • pattern: "^\\d{2,20}$"
locations[].namestring | nullObligatorio en el objeto principal—
locations[].nameanyOf 1stringObligatorio en el objeto principal
  • maxLength: 200
locations[].nameanyOf 2nullObligatorio en el objeto principal—
locations[].addressstring | nullObligatorio en el objeto principal—
locations[].addressanyOf 1stringObligatorio en el objeto principal
  • maxLength: 500
locations[].addressanyOf 2nullObligatorio en el objeto principal—
locations[].citystring | nullObligatorio en el objeto principal—
locations[].cityanyOf 1stringObligatorio en el objeto principal
  • maxLength: 200
locations[].cityanyOf 2nullObligatorio en el objeto principal—
locations[].countrystring | nullObligatorio en el objeto principal—
locations[].countryanyOf 1stringObligatorio en el objeto principal
  • maxLength: 200
locations[].countryanyOf 2nullObligatorio en el objeto principal—
locations[].postal_codestring | nullObligatorio en el objeto principal—
locations[].postal_codeanyOf 1stringObligatorio en el objeto principal
  • maxLength: 100
locations[].postal_codeanyOf 2nullObligatorio en el objeto principal—
root_post_idstringOpcional / elemento
  • pattern: "^\\d{2,20}$"
target_usernamestringOpcional / elemento
  • pattern: "^[A-Za-z0-9._]{1,30}$"
coverageobjectObligatorio en el objeto principal
  • additionalProperties: false
coverage.completebooleanObligatorio en el objeto principal
  • const: false
coverage.next_cursorstring | nullObligatorio en el objeto principal—
coverage.next_cursoranyOf 1stringObligatorio en el objeto principal
  • minLength: 1
  • maxLength: 4096
coverage.next_cursoranyOf 2nullObligatorio en el objeto principal—
coverage.omitted_rowsintegerObligatorio en el objeto principal
  • minimum: 0
  • maximum: 9007199254740991
coverage.reasonsarrayObligatorio en el objeto principal
  • maxItems: 8
coverage.reasons[]stringOpcional / elemento
  • maxLength: 400
quotaarrayObligatorio en el objeto principal
  • maxItems: 1
quota[]objectOpcional / elemento
  • additionalProperties: false
quota[].providerstringObligatorio en el objeto principal
  • const: "meta"
quota[].usageobjectObligatorio en el objeto principal
  • additionalProperties: false
quota[].usage.call_countnumberOpcional / elemento—
quota[].usage.total_cputimenumberOpcional / elemento—
quota[].usage.total_timenumberOpcional / elemento—
quota[].usage.estimated_time_to_regain_accessnumberOpcional / elemento—
quota[].sourcesarrayObligatorio en el objeto principal
  • maxItems: 2
quota[].sources[]stringOpcional / elemento
  • enum: ["x-app-usage","x-business-use-case-usage"]
JSON Schema completo
{
  "type": "object",
  "properties": {
    "contract_version": {
      "type": "string",
      "const": "threads-reads/v1"
    },
    "operation": {
      "type": "string",
      "const": "mentions"
    },
    "source": {
      "type": "string",
      "const": "official_threads_api"
    },
    "workspace_id": {
      "type": "string",
      "format": "uuid"
    },
    "social_account_id": {
      "type": "string",
      "format": "uuid"
    },
    "provider_account_id": {
      "type": "string",
      "pattern": "^\\d{2,20}$"
    },
    "provider_app_identity": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        {
          "type": "null"
        }
      ]
    },
    "oauth_snapshot_id": {
      "anyOf": [
        {
          "type": "string",
          "format": "uuid"
        },
        {
          "type": "null"
        }
      ]
    },
    "fetched_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "status": {
      "type": "string",
      "enum": [
        "available",
        "partial",
        "unavailable"
      ]
    },
    "unavailable_reason": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "grant_inventory_unknown",
            "missing_permissions",
            "issuing_app_unknown",
            "credential_unavailable",
            "credential_expired",
            "account_unhealthy",
            "provider_denied",
            "provider_rate_limited",
            "provider_unavailable",
            "provider_response_invalid"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "access": {
      "type": "object",
      "properties": {
        "required_permissions": {
          "maxItems": 4,
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_]{0,99}$"
          }
        },
        "missing_permissions": {
          "maxItems": 4,
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_]{0,99}$"
          }
        },
        "permission_state": {
          "type": "string",
          "enum": [
            "granted",
            "missing",
            "unknown"
          ]
        },
        "grant_evidence": {
          "type": "string",
          "enum": [
            "exact",
            "unknown"
          ]
        },
        "app_access": {
          "type": "string",
          "const": "unverified"
        }
      },
      "required": [
        "required_permissions",
        "missing_permissions",
        "permission_state",
        "grant_evidence",
        "app_access"
      ],
      "additionalProperties": false
    },
    "data": {
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^\\d{2,20}$"
          },
          "text": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 30000
              },
              {
                "type": "null"
              }
            ]
          },
          "username": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[A-Za-z0-9._]{1,30}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "permalink": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "timestamp": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "media_type": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "TEXT",
                  "TEXT_POST",
                  "IMAGE",
                  "VIDEO",
                  "CAROUSEL_ALBUM",
                  "AUDIO",
                  "REPOST_FACADE"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "is_reply": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "is_quote_post": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "has_replies": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "root_post_id": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\d{2,20}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "replied_to_id": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\d{2,20}$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "text",
          "username",
          "permalink",
          "timestamp",
          "media_type",
          "is_reply",
          "is_quote_post",
          "has_replies"
        ],
        "additionalProperties": false
      }
    },
    "profile": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "username": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._]{1,30}$"
            },
            "name": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "biography": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 2000
                },
                {
                  "type": "null"
                }
              ]
            },
            "is_verified": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "follower_count": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "username",
            "name",
            "biography",
            "is_verified",
            "follower_count"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "locations": {
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^\\d{2,20}$"
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "address": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          },
          "city": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "country": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "postal_code": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "name",
          "address",
          "city",
          "country",
          "postal_code"
        ],
        "additionalProperties": false
      }
    },
    "root_post_id": {
      "type": "string",
      "pattern": "^\\d{2,20}$"
    },
    "target_username": {
      "type": "string",
      "pattern": "^[A-Za-z0-9._]{1,30}$"
    },
    "coverage": {
      "type": "object",
      "properties": {
        "complete": {
          "type": "boolean",
          "const": false
        },
        "next_cursor": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 4096
            },
            {
              "type": "null"
            }
          ]
        },
        "omitted_rows": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "reasons": {
          "maxItems": 8,
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 400
          }
        }
      },
      "required": [
        "complete",
        "next_cursor",
        "omitted_rows",
        "reasons"
      ],
      "additionalProperties": false
    },
    "quota": {
      "maxItems": 1,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "provider": {
            "type": "string",
            "const": "meta"
          },
          "usage": {
            "type": "object",
            "properties": {
              "call_count": {
                "type": "number"
              },
              "total_cputime": {
                "type": "number"
              },
              "total_time": {
                "type": "number"
              },
              "estimated_time_to_regain_access": {
                "type": "number"
              }
            },
            "additionalProperties": false
          },
          "sources": {
            "maxItems": 2,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "x-app-usage",
                "x-business-use-case-usage"
              ]
            }
          }
        },
        "required": [
          "provider",
          "usage",
          "sources"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "contract_version",
    "operation",
    "source",
    "workspace_id",
    "social_account_id",
    "provider_account_id",
    "provider_app_identity",
    "oauth_snapshot_id",
    "fetched_at",
    "status",
    "unavailable_reason",
    "access",
    "data",
    "profile",
    "coverage",
    "quota"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Ejemplo de llamada a herramienta

Estos ejemplos usan valores ficticios comprobados con los esquemas. Sustituye los IDs por otros autorizados, los archivos multimedia por recursos listos y las fechas por tu hora de publicación confirmada. Comprueba la elegibilidad de la cuenta antes de enviar una escritura. Esta página no envía solicitudes API.

{
  "name": "sosoapi_query_threads_mentions",
  "arguments": {
    "workspace_id": "11111111-1111-4111-8111-111111111111",
    "social_account_id": "22222222-2222-4222-8222-222222222222",
    "limit": 25
  }
}

structuredContent

{
  "workspace_id": "11111111-1111-4111-8111-111111111111",
  "social_account_id": "22222222-2222-4222-8222-222222222222",
  "contract_version": "threads-reads/v1",
  "operation": "mentions",
  "source": "official_threads_api",
  "provider_account_id": "12345",
  "provider_app_identity": null,
  "oauth_snapshot_id": null,
  "fetched_at": "2099-01-15T09:00:00Z",
  "status": "unavailable",
  "unavailable_reason": "issuing_app_unknown",
  "access": {
    "required_permissions": [
      "threads_basic",
      "threads_manage_mentions"
    ],
    "missing_permissions": [],
    "permission_state": "unknown",
    "grant_evidence": "unknown",
    "app_access": "unverified"
  },
  "data": [],
  "profile": null,
  "quota": [],
  "coverage": {
    "complete": false,
    "next_cursor": null,
    "omitted_rows": 0,
    "reasons": [
      "Fictional documentation example: no provider request was made and no account data was read.",
      "App access and any pending permission review remain unverified; this is not successful provider or public-access evidence."
    ]
  }
}
Instala o conecta MCP