Alat MCP
Buat kunci API
sosoapi_create_api_keyBuat kunci akses pribadi dengan kemampuan yang dipilih (agent:operate, agent:publish, agent:engage), batas workspace_ids opsional, dan masa berlaku maksimal 365 hari; rahasia dikembalikan sekali dan tidak dapat dibaca lagi. Agen hanya dapat memberikan kewenangan yang dimilikinya, selama paling lama 30 hari, dan kunci berhenti berlaku saat izin tersebut berakhir. Memerlukan izin Kelola kunci API; PAT tidak dapat menggunakannya.
Baca sebagai MarkdownProfil dan transport
Profil: full · Transport: stdio, http
Pilih core atau full untuk mengatur alat yang terlihat oleh klien; ini tidak mengubah izinnya. Unggahan file lokal memerlukan stdio dan tidak tersedia melalui HTTP. Atur SOSOAPI_OUTPUT_SCHEMAS=1 untuk menyertakan skema output saat penemuan. Alat mengembalikan hasil terstruktur dengan atau tanpa pengaturan itu.
Izin dan efek samping
Anotasi membantu klien menjelaskan alat. Setiap panggilan tetap memeriksa autentikasi pengguna, peran, akses sumber daya, dan izin kemampuan.
{
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": false
}- /identity-api/api-keys/create: agent:manage_api_keys · synchronous_http_response
Kolom input
Wajib berarti wajib dalam objek induk dan cabang yang dipilih. Anak wajib tidak membuat induk opsional menjadi wajib. Aturan dan nama kolom di bawah disalin dari kontrak.
| Kolom / cabang | Jenis / wajib | Batasan |
|---|---|---|
$ | objectWajib dalam induk |
|
name | stringWajib dalam induk |
|
lifetime_days | integerOpsional / item | Hari sampai kunci kedaluwarsa (1-365, default 365). Kunci yang dibuat agen terdelegasi tidak pernah berlaku lebih lama dari 30 hari.
|
capabilities | arrayOpsional / item | Tindakan yang boleh dilakukan kunci. Default untuk pengguna yang masuk adalah operate, publish, dan engage. Agen terdelegasi hanya dapat memberikan kewenangan yang dimilikinya (tidak pernah pengelolaan kunci).
|
capabilities[] | stringOpsional / item |
|
workspace_ids | arrayOpsional / item | Batasi kunci pada ruang kerja ini. Hilangkan untuk semua ruang kerja yang dapat diakses pengguna. Kunci terbatas harus menyebutkan ruang kerjanya (workspace_id) pada rute yang biasanya menggunakan ruang kerja aktif, dan tidak dapat memanggil pembacaan seluruh organisasi.
|
workspace_ids[] | stringOpsional / item |
|
scopes | arrayOpsional / item | Alias capabilities yang tidak lagi dianjurkan. Diterapkan persis; daftar kosong diabaikan.
|
scopes[] | stringOpsional / item |
|
idempotency_key | stringOpsional / item | Opsional. Gunakan kunci yang sama untuk mencoba ulang dengan aman. Rahasia ditampilkan sekali: percobaan ulang yang menemukan kunci sudah dibuat menjawab 409 IDEMPOTENT_REPLAY (details.existing_key menyebutkannya), bukan menampilkannya lagi. Cabut kunci itu dan buat yang baru dengan idempotency_key baru.
|
JSON Schema lengkap
{
"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
}Output terstruktur
Skema ini menjelaskan structuredContent dalam hasil alat yang berhasil. Respons MCP juga menyertakan content dan dapat menetapkan isError saat panggilan gagal. Untuk publikasi, baca hasil akhir postingan alih-alih menganggap permintaan diterima atau respons teks sebagai konfirmasi. Operasi API yang ditautkan menjelaskan izin dan aturan percobaan ulang.
Wajib berarti wajib dalam objek induk dan cabang yang dipilih. Anak wajib tidak membuat induk opsional menjadi wajib. Aturan dan nama kolom di bawah disalin dari kontrak.
| Kolom / cabang | Jenis / wajib | Batasan |
|---|---|---|
$ | objectWajib dalam induk |
|
apiKey | objectWajib dalam induk |
|
apiKey.id | stringWajib dalam induk |
|
apiKey.name | stringWajib dalam induk | — |
apiKey.last_4 | stringWajib dalam induk | — |
apiKey.scopes | arrayWajib dalam induk | — |
apiKey.scopes[] | stringOpsional / item | — |
apiKey.created_at | stringWajib dalam induk |
|
apiKey.expires_at | string | nullWajib dalam induk | — |
apiKey.expires_atanyOf 1 | stringWajib dalam induk |
|
apiKey.expires_atanyOf 2 | nullWajib dalam induk | — |
apiKey.last_used_at | string | nullWajib dalam induk | — |
apiKey.last_used_atanyOf 1 | stringWajib dalam induk |
|
apiKey.last_used_atanyOf 2 | nullWajib dalam induk | — |
apiKey.revoked_at | string | nullWajib dalam induk | — |
apiKey.revoked_atanyOf 1 | stringWajib dalam induk |
|
apiKey.revoked_atanyOf 2 | nullWajib dalam induk | — |
apiKey.status | stringWajib dalam induk |
|
apiKey.replaces | object | nullWajib dalam induk | — |
apiKey.replacesanyOf 1 | objectWajib dalam induk |
|
apiKey.replaces.idanyOf 1 | stringWajib dalam induk |
|
apiKey.replaces.nameanyOf 1 | stringWajib dalam induk | — |
apiKey.replaces.last_4anyOf 1 | stringWajib dalam induk | — |
apiKey.replaces.statusanyOf 1 | stringWajib dalam induk |
|
apiKey.replacesanyOf 2 | nullWajib dalam induk | — |
apiKey.replaced_by | arrayWajib dalam induk | — |
apiKey.replaced_by[] | objectOpsional / item |
|
apiKey.replaced_by[].id | stringWajib dalam induk |
|
apiKey.replaced_by[].name | stringWajib dalam induk | — |
apiKey.replaced_by[].last_4 | stringWajib dalam induk | — |
apiKey.replaced_by[].status | stringWajib dalam induk |
|
apiKey.capabilities | arrayOpsional / item | — |
apiKey.capabilities[] | stringOpsional / item |
|
apiKey.workspace_ids | array | nullOpsional / item | — |
apiKey.workspace_idsanyOf 1 | arrayOpsional / item | — |
apiKey.workspace_ids[]anyOf 1 | stringOpsional / item |
|
apiKey.workspace_idsanyOf 2 | nullOpsional / item | — |
apiKey.created_by_delegated_grant_id | string | nullOpsional / item | — |
apiKey.created_by_delegated_grant_idanyOf 1 | stringOpsional / item |
|
apiKey.created_by_delegated_grant_idanyOf 2 | nullOpsional / item | — |
secret | stringWajib dalam induk |
|
JSON Schema lengkap
{
"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
}Contoh panggilan alat
Contoh ini menggunakan nilai fiktif yang diperiksa terhadap skema. Ganti ID dengan yang diizinkan bagi Anda, media dengan aset siap, dan tanggal dengan waktu publikasi yang dikonfirmasi. Periksa kelayakan akun sebelum mengirim penulisan. Halaman ini tidak mengirim permintaan API.
{
"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"
}