Outil MCP
Lister les projets
sosoapi_list_projectsLister les projets d’un espace de travail (couche facultative de provenance et de comptes par défaut) et indiquer celui qui est actif.
Lire en MarkdownProfils et transports
Profils : full · Transports : stdio, http
Choisissez core ou full pour définir les outils visibles du client ; cela ne change pas ses autorisations. Le téléversement local nécessite stdio et n’est pas disponible sur HTTP. Définissez SOSOAPI_OUTPUT_SCHEMAS=1 pour inclure les schémas de sortie à la découverte. Les outils renvoient des résultats structurés avec ou sans ce réglage.
Autorisations et effets de bord
Les annotations aident les clients à décrire un outil. Chaque appel vérifie toujours l’authentification, le rôle, l’accès aux ressources et les capacités accordées de l’utilisateur.
{
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
}- /studio-api/projects/list: agent:operate · synchronous_http_response
Champs d’entrée
Requis signifie requis dans l’objet parent et la branche sélectionnée. Un enfant requis ne rend pas obligatoire un parent facultatif. Les règles et noms de champs ci-dessous proviennent du contrat.
| Champ / branche | Type / requis | Contraintes |
|---|---|---|
$ | objectRequis dans le parent |
|
workspace_id | stringRequis dans le parent |
|
limit | integerFacultatif / élément | Taille de page, de 1 à 100. Envoyer limit ou cursor active la pagination par curseur et ajoute next_cursor à la réponse.
|
cursor | stringFacultatif / élément | Curseur opaque : le next_cursor de la page précédente, inchangé. Omettez-le pour la première page. Les mêmes filtres doivent accompagner chaque page.
|
include_version | booleanFacultatif / élément | Facultatif. true ajoute la version de la ressource à la réponse. — |
JSON Schema complet
{
"type": "object",
"properties": {
"workspace_id": {
"type": "string",
"format": "uuid"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Page size, 1 to 100. Sending limit or cursor switches this route to cursor paging and adds next_cursor to the answer."
},
"cursor": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"description": "Opaque cursor: the next_cursor of the previous page, unchanged. Omit it for the first page. The same filters must be sent with every page."
},
"include_version": {
"description": "Optional. true adds the resource version to the answer.",
"type": "boolean"
}
},
"required": [
"workspace_id"
],
"additionalProperties": false
}Sortie structurée
Ce schéma décrit structuredContent dans un résultat d’outil réussi. La réponse MCP contient aussi content et peut définir isError en cas d’échec. Pour publier, lisez le résultat final de la publication plutôt que de considérer une requête acceptée ou une réponse texte comme une confirmation. L’opération API liée explique les autorisations et règles de nouvelle tentative.
Requis signifie requis dans l’objet parent et la branche sélectionnée. Un enfant requis ne rend pas obligatoire un parent facultatif. Les règles et noms de champs ci-dessous proviennent du contrat.
| Champ / branche | Type / requis | Contraintes |
|---|---|---|
$ | objectRequis dans le parent |
|
projects | arrayRequis dans le parent | — |
projects[] | objectFacultatif / élément |
|
projects[].id | stringRequis dans le parent |
|
projects[].workspace_id | stringRequis dans le parent |
|
projects[].name | stringRequis dans le parent |
|
projects[].operational_state | stringRequis dans le parent |
|
projects[].lifecycle_version | integerRequis dans le parent |
|
projects[].defaults_version | integerRequis dans le parent |
|
projects[].archived_at | string | nullRequis dans le parent | — |
projects[].archived_atanyOf 1 | stringRequis dans le parent | — |
projects[].archived_atanyOf 2 | nullRequis dans le parent | — |
projects[].archived_by | string | nullRequis dans le parent | — |
projects[].archived_byanyOf 1 | stringRequis dans le parent |
|
projects[].archived_byanyOf 2 | nullRequis dans le parent | — |
projects[].archived_by_api_key_id | string | nullRequis dans le parent | — |
projects[].archived_by_api_key_idanyOf 1 | stringRequis dans le parent |
|
projects[].archived_by_api_key_idanyOf 2 | nullRequis dans le parent | — |
projects[].created_at | stringRequis dans le parent | — |
projects[].updated_at | stringRequis dans le parent | — |
projects[].version | integerFacultatif / élément |
|
active_project_id | string | nullRequis dans le parent | — |
active_project_idanyOf 1 | stringRequis dans le parent |
|
active_project_idanyOf 2 | nullRequis dans le parent | — |
next_cursor | string | nullFacultatif / élément | Présent uniquement si la requête contient limit ou cursor. Null sur la dernière page. — |
next_cursoranyOf 1 | stringFacultatif / élément | — |
next_cursoranyOf 2 | nullFacultatif / élément | — |
JSON Schema complet
{
"type": "object",
"properties": {
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"workspace_id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"operational_state": {
"type": "string",
"enum": [
"active",
"archived"
]
},
"lifecycle_version": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"defaults_version": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"archived_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"archived_by": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
]
},
"archived_by_api_key_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "string"
},
"updated_at": {
"type": "string"
},
"version": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"id",
"workspace_id",
"name",
"operational_state",
"lifecycle_version",
"defaults_version",
"archived_at",
"archived_by",
"archived_by_api_key_id",
"created_at",
"updated_at"
],
"additionalProperties": false
}
},
"active_project_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
]
},
"next_cursor": {
"description": "Present only when the request sent limit or cursor. Null on the last page.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"projects",
"active_project_id"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}Exemple d’appel d’outil
Ces exemples utilisent des valeurs fictives vérifiées contre les schémas. Remplacez les identifiants par ceux que vous êtes autorisé à utiliser, les médias par des ressources prêtes et les dates par l’heure confirmée. Vérifiez l’éligibilité du compte avant toute écriture. Cette page n’envoie aucune requête API.
{
"name": "sosoapi_list_projects",
"arguments": {
"workspace_id": "11111111-1111-4111-8111-111111111111"
}
}structuredContent
{
"projects": [],
"active_project_id": null
}