Changes a person's profile, their roles, or the credentials they sign in with.
Changes a person's profile, their roles, or the credentials they sign in with.
POST /v1/iam/users/update
| Address | https://api.hanzo.ai/v1/iam/users/update |
| Method | POST |
| Operation | post_iam_users_update |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Changes a person's profile, their roles, or the credentials they sign in with. Send a password to reset it; leave it out and their current one keeps working.
Who they are does not change: their organization, username and the identifier their existing sessions are keyed on all survive the write, so an update never signs anyone out.
Request
259 fields, body application/json (required).
| Field | In | Type | Required | Description |
|---|---|---|---|---|
password | body | string | — | |
user | body | iam.User | — | |
user.accessKey | body | string | — | API credentials. AccessSecret / AccessSecretHash / the OAuth tokens are bearer material. |
user.accessSecret | body | string | — | |
user.accessSecretHash | body | string | — | |
user.accessToken | body | string | — | |
user.address | body | string[] | — | |
user.addresses | body | iam.Address[] | — | |
user.addresses[].city | body | string | — | |
user.addresses[].line1 | body | string | — | |
user.addresses[].line2 | body | string | — | |
user.addresses[].region | body | string | — | |
user.addresses[].state | body | string | — | |
user.addresses[].tag | body | string | — | |
user.addresses[].zipCode | body | string | — | |
user.adfs | body | string | — | |
user.affiliation | body | string | — | |
user.alipay | body | string | — | |
user.amazon | body | string | — | |
user.apple | body | string | — | |
user.applicationScopes | body | iam.ConsentRecord[] | — | |
user.applicationScopes[].application | body | string | — | |
user.applicationScopes[].grantedScopes | body | string[] | — | |
user.auth0 | body | string | — | |
user.avatar | body | string | — | |
user.avatarType | body | string | — | |
user.azuread | body | string | — | |
user.azureadb2c | body | string | — | |
user.baidu | body | string | — | |
user.balance | body | number | — | Balance mirrors v1 for lossless migration but is authoritative in Commerce (billing.hanzo.ai), not here — do not write it from IAM. |
user.balanceCredit | body | number | — | |
user.balanceCurrency | body | string | — | |
user.battlenet | body | string | — | |
user.bilibili | body | string | — | |
user.bio | body | string | — | |
user.birthday | body | string | — | |
user.bitbucket | body | string | — | |
user.box | body | string | — | |
user.cart | body | iam.CartItem[] | — | |
user.cart[].displayName | body | string | — | |
user.cart[].name | body | string | — | |
user.cart[].owner | body | string | — | |
user.cart[].price | body | number | — | |
user.cart[].quantity | body | integer | — | |
user.cloudfoundry | body | string | — | |
user.countryCode | body | string | — | |
user.createdAt | body | string (date-time) | — | |
user.createdIp | body | string | — | Sign-in provenance. |
user.createdTime | body | string | — | |
user.currency | body | string | — | |
user.custom | body | string | — | |
user.custom2 | body | string | — | |
user.custom3 | body | string | — | |
user.custom4 | body | string | — | |
user.custom5 | body | string | — | |
user.custom6 | body | string | — | |
user.custom7 | body | string | — | |
user.custom8 | body | string | — | |
user.custom9 | body | string | — | |
user.custom10 | body | string | — | |
user.dailymotion | body | string | — | |
user.deezer | body | string | — | |
user.deleted | body | boolean | — | |
user.deletedTime | body | string | — | |
user.digitalocean | body | string | — | |
user.dingtalk | body | string | — | |
user.discord | body | string | — | |
user.displayName | body | string | — | Profile. |
user.douyin | body | string | — | |
user.dropbox | body | string | — | |
user.education | body | string | — | |
user.email | body | string | — | |
user.emailVerified | body | boolean | — | |
user.eveonline | body | string | — | |
user.externalId | body | string | — | |
user.faceIds | body | iam.FaceId[] | — | |
user.faceIds[].faceIdData | body | number[] | — | |
user.faceIds[].imageUrl | body | string | — | |
user.faceIds[].name | body | string | — | |
user.facebook | body | string | — | |
user.firstName | body | string | — | |
user.fitbit | body | string | — | |
user.gender | body | string | — | |
user.gitea | body | string | — | |
user.gitee | body | string | — | |
user.github | body | string | — | Linked federated-identity subjects, one column per connector (v1 parity). |
user.gitlab | body | string | — | |
user.google | body | string | — | |
user.groups | body | string[] | — | |
user.hash | body | string | — | |
user.heroku | body | string | — | |
user.homepage | body | string | — | |
user.iam | body | string | — | |
user.id | body | string | — | Id is the user's STABLE OPAQUE identifier — the value the OIDC sub claim carries. It is the v1 the legacy surface per-row UUID (e.g. |
user.idCard | body | string | — | |
user.idCardType | body | string | — | |
user.influxcloud | body | string | — | |
user.infoflow | body | string | — | |
user.instagram | body | string | — | |
user.intercom | body | string | — | |
user.invitation | body | string | — | |
user.invitationCode | body | string | — | |
user.ipWhitelist | body | string | — | |
user.isAdmin | body | boolean | — | |
user.isDefaultAvatar | body | boolean | — | State flags. |
user.isDeleted | body | boolean | — | |
user.isForbidden | body | boolean | — | |
user.isOnline | body | boolean | — | |
user.isVerified | body | boolean | — | |
user.kakao | body | string | — | |
user.karma | body | integer | — | |
user.kwai | body | string | — | |
user.language | body | string | — | |
user.lark | body | string | — | |
user.lastChangePasswordTime | body | string | — | |
user.lastName | body | string | — | |
user.lastSigninIp | body | string | — | |
user.lastSigninTime | body | string | — | |
user.lastSigninWrongTime | body | string | — | |
user.lastfm | body | string | — | |
user.ldap | body | string | — | |
user.line | body | string | — | |
user.linkedin | body | string | — | |
user.location | body | string | — | |
user.mailru | body | string | — | |
user.managedAccounts | body | iam.ManagedAccount[] | — | |
user.managedAccounts[].application | body | string | — | |
user.managedAccounts[].signinUrl | body | string | — | |
user.managedAccounts[].username | body | string | — | |
user.meetup | body | string | — | |
user.mfaAccounts | body | iam.MfaAccount[] | — | |
user.mfaAccounts[].accountName | body | string | — | |
user.mfaAccounts[].issuer | body | string | — | |
user.mfaAccounts[].origin | body | string | — | |
user.mfaEmailEnabled | body | boolean | — | |
user.mfaItems | body | iam.MfaItem[] | — | |
user.mfaItems[].name | body | string | — | |
user.mfaItems[].rule | body | string | — | |
user.mfaPhoneEnabled | body | boolean | — | |
user.mfaPushEnabled | body | boolean | — | |
user.mfaPushProvider | body | string | — | |
user.mfaPushReceiver | body | string | — | |
user.mfaRadiusEnabled | body | boolean | — | |
user.mfaRadiusProvider | body | string | — | |
user.mfaRadiusUsername | body | string | — | |
user.mfaRememberDeadline | body | string | — | |
user.mfaRememberDigest | body | string | — | MfaRememberDigest is the digest of the token held by the ONE browser the deadline above applies to. |
user.microsoftonline | body | string | — | |
user.multiFactorAuths | body | iam.MfaProps[] | — | |
user.multiFactorAuths[].countryCode | body | string | — | |
user.multiFactorAuths[].enabled | body | boolean | — | |
user.multiFactorAuths[].isPreferred | body | boolean | — | |
user.multiFactorAuths[].mfaRememberInHours | body | integer | — | |
user.multiFactorAuths[].mfaType | body | string | — | |
user.multiFactorAuths[].url | body | string | — | |
user.name | body | string | — | |
user.naver | body | string | — | |
user.needUpdatePassword | body | boolean | — | |
user.nextcloud | body | string | — | |
user.okta | body | string | — | |
user.onedrive | body | string | — | |
user.originalRefreshToken | body | string | — | |
user.originalToken | body | string | — | |
user.oura | body | string | — | |
user.owner | body | string | — | Identity / tenancy. |
user.passwordHash | body | string | — | Credential material. PasswordHash is a one-way bcrypt digest and is verify-only. |
user.passwordSalt | body | string | — | |
user.passwordType | body | string | — | |
user.patreon | body | string | — | |
user.paypal | body | string | — | |
user.permanentAvatar | body | string | — | |
user.permissions | body | iam.Permission[] | — | |
user.permissions[].actions | body | string[] | — | |
user.permissions[].adapter | body | string | — | |
user.permissions[].approveTime | body | string | — | |
user.permissions[].approver | body | string | — | |
user.permissions[].createdAt | body | string (date-time) | — | |
user.permissions[].createdTime | body | string | — | Descriptive metadata. |
user.permissions[].deleted | body | boolean | — | |
user.permissions[].description | body | string | — | |
user.permissions[].displayName | body | string | — | |
user.permissions[].domains | body | string[] | — | |
user.permissions[].effect | body | string | — | |
user.permissions[].groups | body | string[] | — | |
user.permissions[].id | body | string | — | |
user.permissions[].isEnabled | body | boolean | — | |
user.permissions[].model | body | string | — | Authorization model, targets, and decision. |
user.permissions[].name | body | string | — | |
user.permissions[].owner | body | string | — | Identity — the (owner, name) natural key. |
user.permissions[].resourceType | body | string | — | |
user.permissions[].resources | body | string[] | — | |
user.permissions[].roles | body | string[] | — | |
user.permissions[].state | body | string | — | |
user.permissions[].submitter | body | string | — | Submission / approval workflow. |
user.permissions[].updatedAt | body | string (date-time) | — | |
user.permissions[].users | body | string[] | — | Subjects the grant is evaluated for. |
user.phone | body | string | — | |
user.preHash | body | string | — | |
user.preferredMfaType | body | string | — | |
user.properties | body | object | — | |
user.properties.* | body | string | — | |
user.qq | body | string | — | |
user.ranking | body | integer | — | |
user.realName | body | string | — | |
user.recoveryCodes | body | string[] | — | |
user.region | body | string | — | |
user.registerSource | body | string | — | |
user.registerType | body | string | — | |
user.roles | body | iam.Role[] | — | Authorization attachments. |
user.roles[].createdAt | body | string (date-time) | — | |
user.roles[].createdTime | body | string | — | |
user.roles[].deleted | body | boolean | — | |
user.roles[].description | body | string | — | |
user.roles[].displayName | body | string | — | |
user.roles[].domains | body | string[] | — | |
user.roles[].groups | body | string[] | — | |
user.roles[].id | body | string | — | |
user.roles[].isEnabled | body | boolean | — | |
user.roles[].name | body | string | — | |
user.roles[].owner | body | string | — | |
user.roles[].roles | body | string[] | — | |
user.roles[].updatedAt | body | string (date-time) | — | |
user.roles[].users | body | string[] | — | |
user.salesforce | body | string | — | |
user.score | body | integer | — | |
user.shopify | body | string | — | |
user.signinWrongTimes | body | integer | — | |
user.signupApplication | body | string | — | |
user.slack | body | string | — | |
user.soundcloud | body | string | — | |
user.spotify | body | string | — | |
user.steam | body | string | — | |
user.strava | body | string | — | |
user.stripe | body | string | — | |
user.tag | body | string | — | |
user.telegram | body | string | — | |
user.tiktok | body | string | — | |
user.title | body | string | — | |
user.totpSecret | body | string | — | |
user.tumblr | body | string | — | |
user.twitch | body | string | — | |
user.twitter | body | string | — | |
user.type | body | string | — | |
user.typetalk | body | string | — | |
user.uber | body | string | — | |
user.updatedAt | body | string (date-time) | — | |
user.updatedTime | body | string | — | |
user.verificationCode | body | string | — | |
user.vk | body | string | — | |
user.webauthnCredentials | body | any[] | — | Multi-factor authentication. TotpSecret and RecoveryCodes are secret verify-only material — the handler strips them from every response. |
user.wechat | body | string | — | |
user.wecom | body | string | — | |
user.weibo | body | string | — | |
user.wepay | body | string | — | |
user.xero | body | string | — | |
user.yahoo | body | string | — | |
user.yammer | body | string | — | |
user.yandex | body | string | — | |
user.zoom | body | string | — |
Response
| Status | Body | Meaning |
|---|---|---|
200 | iam.User | ok |
200 body — 257 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
accessKey | body | string | — | API credentials. AccessSecret / AccessSecretHash / the OAuth tokens are bearer material. |
accessSecret | body | string | — | |
accessSecretHash | body | string | — | |
accessToken | body | string | — | |
address | body | string[] | — | |
addresses | body | iam.Address[] | — | |
addresses[].city | body | string | — | |
addresses[].line1 | body | string | — | |
addresses[].line2 | body | string | — | |
addresses[].region | body | string | — | |
addresses[].state | body | string | — | |
addresses[].tag | body | string | — | |
addresses[].zipCode | body | string | — | |
adfs | body | string | — | |
affiliation | body | string | — | |
alipay | body | string | — | |
amazon | body | string | — | |
apple | body | string | — | |
applicationScopes | body | iam.ConsentRecord[] | — | |
applicationScopes[].application | body | string | — | |
applicationScopes[].grantedScopes | body | string[] | — | |
auth0 | body | string | — | |
avatar | body | string | — | |
avatarType | body | string | — | |
azuread | body | string | — | |
azureadb2c | body | string | — | |
baidu | body | string | — | |
balance | body | number | — | Balance mirrors v1 for lossless migration but is authoritative in Commerce (billing.hanzo.ai), not here — do not write it from IAM. |
balanceCredit | body | number | — | |
balanceCurrency | body | string | — | |
battlenet | body | string | — | |
bilibili | body | string | — | |
bio | body | string | — | |
birthday | body | string | — | |
bitbucket | body | string | — | |
box | body | string | — | |
cart | body | iam.CartItem[] | — | |
cart[].displayName | body | string | — | |
cart[].name | body | string | — | |
cart[].owner | body | string | — | |
cart[].price | body | number | — | |
cart[].quantity | body | integer | — | |
cloudfoundry | body | string | — | |
countryCode | body | string | — | |
createdAt | body | string (date-time) | — | |
createdIp | body | string | — | Sign-in provenance. |
createdTime | body | string | — | |
currency | body | string | — | |
custom | body | string | — | |
custom2 | body | string | — | |
custom3 | body | string | — | |
custom4 | body | string | — | |
custom5 | body | string | — | |
custom6 | body | string | — | |
custom7 | body | string | — | |
custom8 | body | string | — | |
custom9 | body | string | — | |
custom10 | body | string | — | |
dailymotion | body | string | — | |
deezer | body | string | — | |
deleted | body | boolean | — | |
deletedTime | body | string | — | |
digitalocean | body | string | — | |
dingtalk | body | string | — | |
discord | body | string | — | |
displayName | body | string | — | Profile. |
douyin | body | string | — | |
dropbox | body | string | — | |
education | body | string | — | |
email | body | string | — | |
emailVerified | body | boolean | — | |
eveonline | body | string | — | |
externalId | body | string | — | |
faceIds | body | iam.FaceId[] | — | |
faceIds[].faceIdData | body | number[] | — | |
faceIds[].imageUrl | body | string | — | |
faceIds[].name | body | string | — | |
facebook | body | string | — | |
firstName | body | string | — | |
fitbit | body | string | — | |
gender | body | string | — | |
gitea | body | string | — | |
gitee | body | string | — | |
github | body | string | — | Linked federated-identity subjects, one column per connector (v1 parity). |
gitlab | body | string | — | |
google | body | string | — | |
groups | body | string[] | — | |
hash | body | string | — | |
heroku | body | string | — | |
homepage | body | string | — | |
iam | body | string | — | |
id | body | string | — | Id is the user's STABLE OPAQUE identifier — the value the OIDC sub claim carries. It is the v1 the legacy surface per-row UUID (e.g. |
idCard | body | string | — | |
idCardType | body | string | — | |
influxcloud | body | string | — | |
infoflow | body | string | — | |
instagram | body | string | — | |
intercom | body | string | — | |
invitation | body | string | — | |
invitationCode | body | string | — | |
ipWhitelist | body | string | — | |
isAdmin | body | boolean | — | |
isDefaultAvatar | body | boolean | — | State flags. |
isDeleted | body | boolean | — | |
isForbidden | body | boolean | — | |
isOnline | body | boolean | — | |
isVerified | body | boolean | — | |
kakao | body | string | — | |
karma | body | integer | — | |
kwai | body | string | — | |
language | body | string | — | |
lark | body | string | — | |
lastChangePasswordTime | body | string | — | |
lastName | body | string | — | |
lastSigninIp | body | string | — | |
lastSigninTime | body | string | — | |
lastSigninWrongTime | body | string | — | |
lastfm | body | string | — | |
ldap | body | string | — | |
line | body | string | — | |
linkedin | body | string | — | |
location | body | string | — | |
mailru | body | string | — | |
managedAccounts | body | iam.ManagedAccount[] | — | |
managedAccounts[].application | body | string | — | |
managedAccounts[].signinUrl | body | string | — | |
managedAccounts[].username | body | string | — | |
meetup | body | string | — | |
mfaAccounts | body | iam.MfaAccount[] | — | |
mfaAccounts[].accountName | body | string | — | |
mfaAccounts[].issuer | body | string | — | |
mfaAccounts[].origin | body | string | — | |
mfaEmailEnabled | body | boolean | — | |
mfaItems | body | iam.MfaItem[] | — | |
mfaItems[].name | body | string | — | |
mfaItems[].rule | body | string | — | |
mfaPhoneEnabled | body | boolean | — | |
mfaPushEnabled | body | boolean | — | |
mfaPushProvider | body | string | — | |
mfaPushReceiver | body | string | — | |
mfaRadiusEnabled | body | boolean | — | |
mfaRadiusProvider | body | string | — | |
mfaRadiusUsername | body | string | — | |
mfaRememberDeadline | body | string | — | |
mfaRememberDigest | body | string | — | MfaRememberDigest is the digest of the token held by the ONE browser the deadline above applies to. |
microsoftonline | body | string | — | |
multiFactorAuths | body | iam.MfaProps[] | — | |
multiFactorAuths[].countryCode | body | string | — | |
multiFactorAuths[].enabled | body | boolean | — | |
multiFactorAuths[].isPreferred | body | boolean | — | |
multiFactorAuths[].mfaRememberInHours | body | integer | — | |
multiFactorAuths[].mfaType | body | string | — | |
multiFactorAuths[].url | body | string | — | |
name | body | string | — | |
naver | body | string | — | |
needUpdatePassword | body | boolean | — | |
nextcloud | body | string | — | |
okta | body | string | — | |
onedrive | body | string | — | |
originalRefreshToken | body | string | — | |
originalToken | body | string | — | |
oura | body | string | — | |
owner | body | string | — | Identity / tenancy. |
passwordHash | body | string | — | Credential material. PasswordHash is a one-way bcrypt digest and is verify-only. |
passwordSalt | body | string | — | |
passwordType | body | string | — | |
patreon | body | string | — | |
paypal | body | string | — | |
permanentAvatar | body | string | — | |
permissions | body | iam.Permission[] | — | |
permissions[].actions | body | string[] | — | |
permissions[].adapter | body | string | — | |
permissions[].approveTime | body | string | — | |
permissions[].approver | body | string | — | |
permissions[].createdAt | body | string (date-time) | — | |
permissions[].createdTime | body | string | — | Descriptive metadata. |
permissions[].deleted | body | boolean | — | |
permissions[].description | body | string | — | |
permissions[].displayName | body | string | — | |
permissions[].domains | body | string[] | — | |
permissions[].effect | body | string | — | |
permissions[].groups | body | string[] | — | |
permissions[].id | body | string | — | |
permissions[].isEnabled | body | boolean | — | |
permissions[].model | body | string | — | Authorization model, targets, and decision. |
permissions[].name | body | string | — | |
permissions[].owner | body | string | — | Identity — the (owner, name) natural key. |
permissions[].resourceType | body | string | — | |
permissions[].resources | body | string[] | — | |
permissions[].roles | body | string[] | — | |
permissions[].state | body | string | — | |
permissions[].submitter | body | string | — | Submission / approval workflow. |
permissions[].updatedAt | body | string (date-time) | — | |
permissions[].users | body | string[] | — | Subjects the grant is evaluated for. |
phone | body | string | — | |
preHash | body | string | — | |
preferredMfaType | body | string | — | |
properties | body | object | — | |
properties.* | body | string | — | |
qq | body | string | — | |
ranking | body | integer | — | |
realName | body | string | — | |
recoveryCodes | body | string[] | — | |
region | body | string | — | |
registerSource | body | string | — | |
registerType | body | string | — | |
roles | body | iam.Role[] | — | Authorization attachments. |
roles[].createdAt | body | string (date-time) | — | |
roles[].createdTime | body | string | — | |
roles[].deleted | body | boolean | — | |
roles[].description | body | string | — | |
roles[].displayName | body | string | — | |
roles[].domains | body | string[] | — | |
roles[].groups | body | string[] | — | |
roles[].id | body | string | — | |
roles[].isEnabled | body | boolean | — | |
roles[].name | body | string | — | |
roles[].owner | body | string | — | |
roles[].roles | body | string[] | — | |
roles[].updatedAt | body | string (date-time) | — | |
roles[].users | body | string[] | — | |
salesforce | body | string | — | |
score | body | integer | — | |
shopify | body | string | — | |
signinWrongTimes | body | integer | — | |
signupApplication | body | string | — | |
slack | body | string | — | |
soundcloud | body | string | — | |
spotify | body | string | — | |
steam | body | string | — | |
strava | body | string | — | |
stripe | body | string | — | |
tag | body | string | — | |
telegram | body | string | — | |
tiktok | body | string | — | |
title | body | string | — | |
totpSecret | body | string | — | |
tumblr | body | string | — | |
twitch | body | string | — | |
twitter | body | string | — | |
type | body | string | — | |
typetalk | body | string | — | |
uber | body | string | — | |
updatedAt | body | string (date-time) | — | |
updatedTime | body | string | — | |
verificationCode | body | string | — | |
vk | body | string | — | |
webauthnCredentials | body | any[] | — | Multi-factor authentication. TotpSecret and RecoveryCodes are secret verify-only material — the handler strips them from every response. |
wechat | body | string | — | |
wecom | body | string | — | |
weibo | body | string | — | |
wepay | body | string | — | |
xero | body | string | — | |
yahoo | body | string | — | |
yammer | body | string | — | |
yandex | body | string | — | |
zoom | body | string | — |
Failure carries the platform error shape — see Errors.
Examples
hanzo iam users updateimport { Configuration, IamApi } from 'hanzoai';
const api = new IamApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postIamUsersUpdate({ password: "<password>", user: {"accessKey":"<accessKey>","accessSecret":"<accessSecret>","accessSecretHash":"<accessSecretHash>","accessToken":"<accessToken>"} });from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import IamApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = IamApi(client).post_iam_users_update(password="<password>", user={"accessKey":"<accessKey>","accessSecret":"<accessSecret>","accessSecretHash":"<accessSecretHash>","accessToken":"<accessToken>"})cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.IamAPI.PostIamUsersUpdate(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::apis::{configuration::Configuration, iam_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = iam_api::post_iam_users_update(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.IamApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new IamApi(client).postIamUsersUpdate();curl -X POST https://api.hanzo.ai/v1/iam/users/update \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"password": "<password>",
"user": {
"accessKey": "<accessKey>",
"accessSecret": "<accessSecret>",
"accessSecretHash": "<accessSecretHash>",
"accessToken": "<accessToken>"
}
}'The door reaches iam through the iam tool, which names its 75 operations with its own verbs — this one among them, under a name only the door declares. describe explains any of them:
curl -X POST https://api.hanzo.ai/v1/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe",
"arguments": {
"op": "list__well_known_jwks"
}
}
}'How is this guide?