MCP-tool
API-sleutel maken
sosoapi_create_api_keyMaak een persoonlijke toegangssleutel met gekozen bevoegdheden (agent:operate, agent:publish, agent:engage), een optionele workspace_ids-beperking en een geldigheidsduur van maximaal 365 dagen; het geheim wordt één keer teruggegeven en kan niet opnieuw worden gelezen. Een agent kan alleen eigen bevoegdheden toekennen, voor maximaal 30 dagen, en de sleutel werkt niet meer zodra die machtiging eindigt. Vereist de machtiging Manage API keys; een PAT kan dit niet gebruiken.
Lezen als MarkdownProfielen en transporten
Profielen: full · Transporten: stdio, http
Kies core of full om te bepalen welke tools je client ziet; dit verandert geen machtigingen. Lokale bestandsupload vereist stdio en is niet beschikbaar via HTTP. Stel SOSOAPI_OUTPUT_SCHEMAS=1 in om uitvoerschema's bij detectie op te nemen. Tools geven met en zonder die instelling gestructureerde resultaten terug.
Machtigingen en neveneffecten
Annotaties helpen clients een tool te beschrijven. Elke aanroep controleert nog steeds gebruikersauthenticatie, rol, resourcetoegang en verleende bevoegdheden.
{
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": false
}- /identity-api/api-keys/create: agent:manage_api_keys · synchronous_http_response
Invoervelden
Verplicht betekent verplicht binnen het bovenliggende object en de gekozen variant. Een verplicht onderliggend veld maakt een optioneel bovenliggend object niet verplicht. Onderstaande regels en veldnamen zijn uit het contract gekopieerd.
| Veld / variant | Type / verplicht | Beperkingen |
|---|---|---|
$ | objectVerplicht in bovenliggend object |
|
name | stringVerplicht in bovenliggend object |
|
lifetime_days | integerOptioneel / item | Dagen tot de sleutel vervalt (1-365, standaard 365). Een door een gedelegeerde agent gemaakte sleutel is nooit langer dan 30 dagen geldig.
|
capabilities | arrayOptioneel / item | Wat de sleutel mag doen. Standaard operate, publish en engage voor een aangemelde gebruiker. Een gedelegeerde agent kan alleen eigen bevoegdheden toekennen (nooit sleutelbeheer).
|
capabilities[] | stringOptioneel / item |
|
workspace_ids | arrayOptioneel / item | Beperk de sleutel tot deze werkruimten. Laat dit weg voor elke werkruimte waartoe de gebruiker toegang heeft. Een beperkte sleutel moet op routes die anders de actieve werkruimte gebruiken de werkruimte noemen (workspace_id) en kan geen organisatiebrede leesacties aanroepen.
|
workspace_ids[] | stringOptioneel / item |
|
scopes | arrayOptioneel / item | Verouderde alias van capabilities. Wordt exact toegepast; een lege lijst wordt genegeerd.
|
scopes[] | stringOptioneel / item |
|
idempotency_key | stringOptioneel / item | Optioneel. Hergebruik dezelfde sleutel om veilig opnieuw te proberen. Het geheim wordt één keer getoond: als bij opnieuw proberen de sleutel al bestaat, volgt 409 IDEMPOTENT_REPLAY (details.existing_key noemt de sleutel) in plaats van het geheim opnieuw te tonen. Trek die sleutel in en maak een nieuwe met een nieuwe idempotency_key.
|
Volledig JSON Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"lifetime_days": {
"description": "Days until the key expires (1-365, default 365). A key created by a delegated agent never lives longer than 30 days.",
"type": "integer",
"minimum": 1,
"maximum": 365
},
"capabilities": {
"description": "What the key may do. Defaults to operate, publish and engage for a signed-in user. A delegated agent can only grant what its own authorization holds (never key management).",
"minItems": 1,
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"enum": [
"agent:operate",
"agent:publish",
"agent:engage"
]
}
},
"workspace_ids": {
"description": "Limit the key to these Workspaces. Omit it for every Workspace the user can access. A limited key must name its Workspace (workspace_id) on routes that would otherwise use the active Workspace, and cannot call organization-wide reads.",
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"scopes": {
"description": "Deprecated alias of capabilities. It is honoured exactly; an empty list is ignored.",
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"enum": [
"agent:operate",
"agent:publish",
"agent:engage"
]
}
},
"idempotency_key": {
"description": "Optional. Reuse the same key to retry safely. The secret is shown once: a retry that finds the key already created answers 409 IDEMPOTENT_REPLAY (details.existing_key names it) instead of showing it again. Revoke that key and create a new one with a new idempotency_key.",
"type": "string",
"minLength": 8,
"maxLength": 160,
"pattern": "^[!-~]+$"
}
},
"required": [
"name"
],
"additionalProperties": false
}Gestructureerde uitvoer
Dit schema beschrijft structuredContent in een geslaagd toolresultaat. Het MCP-antwoord bevat ook content en kan isError instellen wanneer een aanroep mislukt. Lees bij publiceren het definitieve berichtresultaat; beschouw een geaccepteerd verzoek of tekstantwoord niet als bevestiging. De gekoppelde API-bewerking beschrijft machtigingen en regels voor opnieuw proberen.
Verplicht betekent verplicht binnen het bovenliggende object en de gekozen variant. Een verplicht onderliggend veld maakt een optioneel bovenliggend object niet verplicht. Onderstaande regels en veldnamen zijn uit het contract gekopieerd.
| Veld / variant | Type / verplicht | Beperkingen |
|---|---|---|
$ | objectVerplicht in bovenliggend object |
|
apiKey | objectVerplicht in bovenliggend object |
|
apiKey.id | stringVerplicht in bovenliggend object |
|
apiKey.name | stringVerplicht in bovenliggend object | — |
apiKey.last_4 | stringVerplicht in bovenliggend object | — |
apiKey.scopes | arrayVerplicht in bovenliggend object | — |
apiKey.scopes[] | stringOptioneel / item | — |
apiKey.created_at | stringVerplicht in bovenliggend object |
|
apiKey.expires_at | string | nullVerplicht in bovenliggend object | — |
apiKey.expires_atanyOf 1 | stringVerplicht in bovenliggend object |
|
apiKey.expires_atanyOf 2 | nullVerplicht in bovenliggend object | — |
apiKey.last_used_at | string | nullVerplicht in bovenliggend object | — |
apiKey.last_used_atanyOf 1 | stringVerplicht in bovenliggend object |
|
apiKey.last_used_atanyOf 2 | nullVerplicht in bovenliggend object | — |
apiKey.revoked_at | string | nullVerplicht in bovenliggend object | — |
apiKey.revoked_atanyOf 1 | stringVerplicht in bovenliggend object |
|
apiKey.revoked_atanyOf 2 | nullVerplicht in bovenliggend object | — |
apiKey.status | stringVerplicht in bovenliggend object |
|
apiKey.replaces | object | nullVerplicht in bovenliggend object | — |
apiKey.replacesanyOf 1 | objectVerplicht in bovenliggend object |
|
apiKey.replaces.idanyOf 1 | stringVerplicht in bovenliggend object |
|
apiKey.replaces.nameanyOf 1 | stringVerplicht in bovenliggend object | — |
apiKey.replaces.last_4anyOf 1 | stringVerplicht in bovenliggend object | — |
apiKey.replaces.statusanyOf 1 | stringVerplicht in bovenliggend object |
|
apiKey.replacesanyOf 2 | nullVerplicht in bovenliggend object | — |
apiKey.replaced_by | arrayVerplicht in bovenliggend object | — |
apiKey.replaced_by[] | objectOptioneel / item |
|
apiKey.replaced_by[].id | stringVerplicht in bovenliggend object |
|
apiKey.replaced_by[].name | stringVerplicht in bovenliggend object | — |
apiKey.replaced_by[].last_4 | stringVerplicht in bovenliggend object | — |
apiKey.replaced_by[].status | stringVerplicht in bovenliggend object |
|
apiKey.capabilities | arrayOptioneel / item | — |
apiKey.capabilities[] | stringOptioneel / item |
|
apiKey.workspace_ids | array | nullOptioneel / item | — |
apiKey.workspace_idsanyOf 1 | arrayOptioneel / item | — |
apiKey.workspace_ids[]anyOf 1 | stringOptioneel / item |
|
apiKey.workspace_idsanyOf 2 | nullOptioneel / item | — |
apiKey.created_by_delegated_grant_id | string | nullOptioneel / item | — |
apiKey.created_by_delegated_grant_idanyOf 1 | stringOptioneel / item |
|
apiKey.created_by_delegated_grant_idanyOf 2 | nullOptioneel / item | — |
secret | stringVerplicht in bovenliggend object |
|
Volledig JSON Schema
{
"type": "object",
"properties": {
"apiKey": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"last_4": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"created_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)))$"
},
"expires_at": {
"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"
}
]
},
"last_used_at": {
"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"
}
]
},
"revoked_at": {
"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"
}
]
},
"status": {
"type": "string",
"enum": [
"active",
"expired",
"revoked"
]
},
"replaces": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"last_4": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"active",
"expired",
"revoked"
]
}
},
"required": [
"id",
"name",
"last_4",
"status"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"replaced_by": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"last_4": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"active",
"expired",
"revoked"
]
}
},
"required": [
"id",
"name",
"last_4",
"status"
],
"additionalProperties": false
}
},
"capabilities": {
"type": "array",
"items": {
"type": "string",
"enum": [
"agent:operate",
"agent:publish",
"agent:engage"
]
}
},
"workspace_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
{
"type": "null"
}
]
},
"created_by_delegated_grant_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"last_4",
"scopes",
"created_at",
"expires_at",
"last_used_at",
"revoked_at",
"status",
"replaces",
"replaced_by"
],
"additionalProperties": false
},
"secret": {
"type": "string",
"minLength": 1
}
},
"required": [
"apiKey",
"secret"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}Voorbeeld van een toolaanroep
Deze voorbeelden gebruiken fictieve waarden die tegen de schema's zijn gecontroleerd. Vervang IDs door toegestane IDs, media door gereedstaande bestanden en datums door je bevestigde publicatietijd. Controleer accountgeschiktheid vóór een schrijfhandeling. Deze pagina verstuurt geen API-verzoeken.
{
"name": "sosoapi_create_api_key",
"arguments": {
"name": "example"
}
}structuredContent
{
"apiKey": {
"id": "11111111-1111-4111-8111-111111111111",
"name": "example",
"last_4": "example",
"scopes": [],
"created_at": "2099-01-15T09:00:00Z",
"expires_at": null,
"last_used_at": null,
"revoked_at": null,
"status": "active",
"replaces": null,
"replaced_by": []
},
"secret": "example"
}