scaleway-ops-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SCW_ACCESS_KEY | Yes | Access key of the credential this server authenticates as. | |
| SCW_PROJECT_ID | Yes | Default Project (used as default_project_id when creating API keys, and wherever a Project id is needed but not explicitly passed). | |
| SCW_SECRET_KEY | Yes | Secret key. Used as X-Auth-Token for the IAM API and as the SigV4 secret for S3 calls. | |
| MAX_OUTPUT_CHARS | No | Truncation limit for tool responses. | 25000 |
| SCW_DEFAULT_REGION | No | Region for Bucket Policy calls when a tool call doesn't specify one. | fr-par |
| SCW_ORGANIZATION_ID | Yes | Organization these operations run in. | |
| MAX_PUT_OBJECT_BYTES | No | Decoded-size ceiling for scaleway_s3_put_object - single-part only, multipart is out of scope. | 5000000 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| scaleway_iam_create_applicationA | Create a new IAM Application (a non-human identity) in this Organization. Creates the identity only - it has NO permissions until you attach an IAM Policy (scaleway_iam_create_policy) and/or a Bucket Policy. Returns the Application id, needed for both of those next steps. |
| scaleway_iam_update_applicationA | Rename/re-describe/re-tag an existing IAM Application. Only the id is fixed - name, description and tags are all safe to change at any time: nothing else in Scaleway references an Application by name (Bucket Policies and API keys reference application_id, never the name), so renaming never breaks a live credential or requires touching anything downstream. Only the fields you pass are changed; omitted fields are left as-is. |
| scaleway_iam_list_applicationsA | List IAM Applications in this Organization, optionally filtered by name substring. |
| scaleway_iam_get_applicationA | Get one IAM Application by id, including its API-key count. |
| scaleway_iam_delete_applicationA | PERMANENTLY delete an IAM Application: also deletes every API key it holds and detaches every policy scoped to it. Any credential still deployed somewhere (e.g. in a host's .env.prod) stops authenticating immediately and irreversibly. Requires confirm=true. |
| scaleway_iam_create_api_keyA | Generate a new API key (access_key + secret_key pair) for an Application. IMPORTANT: secret_key is returned ONLY in this response - Scaleway never shows it again, and there is no recovery endpoint. The caller MUST capture it immediately (e.g. write straight to the target host's env file or a secret manager) rather than just printing it, since it cannot be re-fetched later - only revoked and replaced with a new key. Each call mints a real, immediately-active credential; don't call this speculatively. |
| scaleway_iam_update_api_keyA | Change an existing API key's description, expiry, or default_project_id WITHOUT rotating its secret - the access_key/secret_key pair itself never changes. Use this instead of delete+recreate for a metadata-only change (e.g. extending an expiry before it lapses, or fixing a stale description); delete+recreate would mint a new secret and break anything already deployed with the old one. Only the fields you pass are changed; omitted fields are left as-is. |
| scaleway_iam_list_api_keysA | List API keys in this Organization (never includes secret_key - only visible once, at creation). Optionally filter to one Application. |
| scaleway_iam_delete_api_keyA | PERMANENTLY revoke an API key by its access_key. Requires confirm=true. Irreversible - anything using this key stops authenticating immediately. |
| scaleway_iam_create_policyA | Create an IAM Policy granting permission sets to an Application/User/Group, scoped to specific Project(s) or the whole Organization. This is the PROJECT-WIDE half of access control - for Object Storage specifically, it grants access to every bucket in the Project(s); narrow to one bucket with a Bucket Policy (scaleway_s3_put_bucket_policy) as well. A Bucket Policy alone is NOT sufficient on Scaleway - both are required together for an Application to actually read/write a specific bucket. Call scaleway_iam_list_permission_sets first to get exact names and scope_types. |
| scaleway_iam_clone_policyA | Clone an existing IAM Policy. The result is an exact copy: same rules, same principal (application_id/user_id/group_id), same tags. Name gets Scaleway's own 'Copy of ' default - rename afterward with scaleway_iam_update_policy if a distinct name is needed (nothing references a Policy by name, so renaming is always safe). Gotcha this tool works around: Scaleway's underlying CLONE endpoint (POST /policies/{id}/clone) ignores its request body entirely and always returns the clone UNATTACHED (no_principal, tags stripped) regardless of the source - confirmed empirically 2026-08-18. This tool follows up with a PATCH restoring the source's principal and tags before returning, so the clone you get back actually matches what 'clone' implies, instead of a silently orphaned policy with no built-in way to reattach it. As with scaleway_iam_create_policy, the response's nb_rules/nb_permission_sets counts can read 0 immediately after this call despite rules having copied correctly - call scaleway_iam_list_policy_rules for ground truth if that count looks wrong. |
| scaleway_iam_update_policyA | Rename/re-describe/re-tag an existing IAM Policy. Does NOT touch rules, application_id, or any other principal/permission field - only name, description, tags change, so this never alters what the policy grants or to whom. Nothing references a Policy by name, so renaming is always safe. Only the fields you pass are changed; omitted fields are left as-is. |
| scaleway_iam_list_policiesA | List IAM Policies in this Organization, optionally filtered to those attached to one Application. |
| scaleway_iam_get_policyA | Get one IAM Policy's metadata (name, description, tags, application_id, nb_rules count) by id. Does NOT return the actual rules array - confirmed empirically that Scaleway's GET here never populates it despite create accepting rules in its request body. Call scaleway_iam_list_policy_rules for the real rules. |
| scaleway_iam_list_policy_rulesA | Get the actual rules (permission sets + scope, each as project_ids or organization_id) attached to a Policy. Use this, not scaleway_iam_get_policy, to see what a policy really grants. |
| scaleway_iam_set_policy_rulesA | Overwrite the COMPLETE rules array on an existing Policy in one atomic call - the safe way to add or remove a permission set on a live policy. Prefer this over delete+recreate: deleting a policy that grants its own holder IAMPolicyManager revokes that permission the instant it's deleted, before a replacement can be created, which can lock the credential you're using out of IAM entirely. Call scaleway_iam_list_policy_rules first to get the current array before changing it. |
| scaleway_iam_delete_policyA | PERMANENTLY delete an IAM Policy. Requires confirm=true. Every permission it granted is revoked immediately. |
| scaleway_iam_list_permission_setsA | List every permission set Scaleway IAM policies can grant (e.g. ObjectStorageReadOnly, IAMPolicyManager). Each entry's |
| scaleway_iam_list_usersA | List human Users of this Organization (the console's IAM > Users page) - id, email, status, type (owner/member/guest), locked and MFA flags. Needs IAMUserReadOnly/IAMUserManager on this server's credential. |
| scaleway_iam_get_userA | Read one human User by id - full profile incl. status, type, locked, MFA flags. |
| scaleway_iam_create_userA | Create a human User by email. SEMANTICS UNVERIFIED (2026-08-18): Scaleway's docs state users 'can only be invited to join' an Organization, yet the API exposes this create endpoint requiring a type field - most likely this sends the person an invitation/set-password email and creates a guest; that happy path could not be live-verified without a disposable mailbox. A REAL email is sent to the address on success - never call speculatively. Requires confirm=true. The API validates email format and a type ('guest' is the default here, inferred from the guest-only delete endpoint - also unverified). |
| scaleway_iam_update_userB | Update a User's mutable profile fields (tags; name/email where the API allows - invalid fields are rejected with the API's own validation message). Only passed fields change. |
| scaleway_iam_delete_userA | PERMANENTLY remove a User from this Organization. Requires confirm=true. Two guards: (1) this tool refuses to delete the Organization OWNER (type === 'owner') outright; (2) the API's own endpoint is guest-scoped ('Delete a guest user') - deleting a member/owner is rejected server-side and that error is surfaced verbatim. Live-probed 2026-08-18 on bogus ids only; guest happy-path unverified. |
| scaleway_iam_lock_userA | Lock a human User out of the Organization IMMEDIATELY (expected use: compromise response, offboarding). Requires confirm=true. This acts on a person, not a service - the console shows them as locked. Exact session/token invalidation timing unverified. |
| scaleway_iam_unlock_userA | Restore a locked User's access. Reversible counterpart of lock_user. |
| scaleway_iam_update_user_passwordA | ADMIN-SET password reset: the new password is supplied BY THE CALLER (API takes it explicitly, 1-72 bytes - live-probed) and takes effect immediately for the person's login. Account-takeover-grade power over a human - requires confirm=true. The password value travels in this tool call's arguments: generate a strong one, deliver it to the person over a separate secure channel, and never reuse an existing/known password. Whether active sessions are invalidated is unverified. |
| scaleway_iam_update_user_usernameA | Change what the person types to LOG IN. Requires confirm=true - they must be told, or they cannot sign in next time. Live-probed on bogus ids only (404 shape). |
| scaleway_iam_delete_user_mfa_otpA | Remove the person's TOTP MFA factor. SECURITY-WEAKENING on a human account - requires confirm=true. Expected legitimate use: lost authenticator recovery. Creating/enrolling a new OTP is deliberately NOT a tool here: enrollment requires the human's authenticator code to validate, and a created-but-unvalidated factor leaves MFA half-configured (flow states unprobed, endpoint shape live-verified 2026-08-18). |
| scaleway_iam_list_user_grace_periodsA | Read the User's grace periods (post-lock/deletion data-access windows). Read-only. |
| scaleway_iam_list_groupsA | List Groups in the Organization, including Scaleway's preset groups (Administrators/Editors/Billing Administrators) and any special managed groups. 'name' is an EXACT match, not a substring filter. Array filters (group_ids/user_ids/application_ids) narrow to groups matching ANY of the given ids. |
| scaleway_iam_get_groupA | Read one Group's full details, including its complete member lists (user_ids/application_ids) and special-group flags (managed/all_users/all_applications). |
| scaleway_iam_create_groupA | Create a new, empty Group. No confirm needed - fully reversible, grants nothing to anyone until members are added and/or a Policy is attached to its group_id. Name must be unique in the Organization (max 64 chars) - re-creating the same name immediately after deleting a group with that name may hit a brief uniqueness lag (seen elsewhere in this API, e.g. Applications). |
| scaleway_iam_update_groupA | Change a Group's name/description/tags. Only passed fields change. Refuses Scaleway-managed/special groups tool-side. |
| scaleway_iam_delete_groupA | PERMANENTLY delete a Group. Requires confirm=true. IRREVERSIBLE: any Policy granting access via this group's group_id stops applying to its former members immediately - anyone relying solely on this group's grants loses that access. Refuses Scaleway-managed/special groups (all_users/all_applications) tool-side - fetches the group first to check. |
| scaleway_iam_add_group_memberA | Add one User and/or one Application to a Group in a single call (both may be given at once - it's not either/or). Grants that member every permission any Policy attaches to this group's group_id, immediately. Existing members are preserved. Refuses Scaleway-managed/special or non-editable groups. |
| scaleway_iam_add_group_membersA | Add multiple Users and/or Applications to a Group at once. Existing members are preserved - this is additive, not a replace. Refuses Scaleway-managed/special or non-editable groups. |
| scaleway_iam_set_group_membersA | FULL-REPLACE a Group's membership: the given user_ids/application_ids become the COMPLETE member list - anyone currently a member but NOT in either list is REMOVED, losing this group's grants immediately. Requires confirm=true. Pass empty arrays to remove everyone. Refuses Scaleway-managed/special groups. |
| scaleway_iam_remove_group_memberA | Remove one User and/or one Application from a Group. Requires confirm=true. That member immediately loses every permission this group's attached Policies granted them - check they don't rely solely on this group for access they still need. Refuses Scaleway-managed/special or non-editable groups. |
| scaleway_iam_list_ssh_keysA | List SSH public keys registered in a Project (used to grant SSH access to Instances). Compact view - omits the actual public_key text; use scaleway_iam_get_ssh_key for the full key if needed. Needs SSHKeysReadOnly/FullAccess. |
| scaleway_iam_get_ssh_keyA | Read one SSH key by id, including the full public_key text and fingerprint. |
| scaleway_iam_create_ssh_keyA | Register a PUBLIC SSH key (never a private key - rejected client-side if the payload looks like a PEM private-key block or doesn't start with a recognized public-key prefix). This grants SSH access to any Instance/service that trusts keys from this Project - don't call speculatively. |
| scaleway_iam_update_ssh_keyA | Change an SSH key's name. The key material itself (public_key/fingerprint) cannot be changed here - delete and re-create to rotate the actual key. |
| scaleway_iam_delete_ssh_keyA | PERMANENTLY remove an SSH key. Requires confirm=true. If any Instance/service was relying solely on this key for access, whoever holds it loses SSH access immediately - confirm it's no longer in use, or that another access path exists, before deleting. |
| scaleway_iam_list_jwtsA | List active JWT sessions (browser/console logins) for one User. NOT the same as API keys - these are interactive-login session tokens. Live-probed 2026-08-18: this server's Application/API-key credential gets 403 'insufficient permissions' on resource 'self_jwt' even with full IAMManager - the surface appears scoped to a session's own JWTs, which an API-key credential never has. May only be callable from a human's own session context, not from this server. Reports the error verbatim if so. |
| scaleway_iam_get_jwtA | Read one JWT session's metadata (jti, audience, expiry, IP, user agent) by its id. |
| scaleway_iam_delete_jwtA | Immediately invalidate one active browser/console session. Requires confirm=true. Whoever holds that session is signed out right away - same severity as revoking an API key, but for an interactive login instead of a programmatic credential. |
| scaleway_iam_get_saml_configA | Read the Organization's SAML SSO config (status, entity IDs, ACS URL). Returns an error if SAML has never been enabled for this Organization - that is the expected/default state, not a fault. |
| scaleway_iam_enable_samlA | Enable SAML SSO, registering the identity provider's entity_id and SSO URL. ORG-WIDE BLAST RADIUS: this changes how EVERYONE in the Organization signs in. A misconfigured IdP entity_id/SSO URL, or an expired/wrong certificate, can lock every user out of the console at once - console-based recovery is also gated by this policy if it fails. Verify the IdP-side configuration is correct BEFORE calling this, and keep at least one non-SAML login method (password) available on your own account as a fallback. Requires confirm=true. The resulting config starts in status 'missing_certificate' until a certificate is added via scaleway_iam_add_saml_certificate - SSO logins cannot succeed until then, so enabling alone does not immediately expose a working (or misconfigurable) login path. |
| scaleway_iam_update_samlA | Change the registered identity provider's entity_id/SSO URL. ORG-WIDE BLAST RADIUS: this changes how EVERYONE in the Organization signs in. A misconfigured IdP entity_id/SSO URL, or an expired/wrong certificate, can lock every user out of the console at once - console-based recovery is also gated by this policy if it fails. Verify the IdP-side configuration is correct BEFORE calling this, and keep at least one non-SAML login method (password) available on your own account as a fallback. Requires confirm=true. Method is PATCH per the API reference (distinct from enable, which is POST); the PATCH call itself was not live-verified (deliberately - see docs/gotchas.md). |
| scaleway_iam_disable_samlA | PERMANENTLY remove the Organization's SAML SSO configuration. Requires confirm=true. Anyone who relies on SSO to sign in falls back to password/other login methods - if they have none set, they are LOCKED OUT. Confirmed via live probe: the working endpoint is a top-level DELETE by the SAML config's own id, NOT the org-nested path (which 405s) - this tool fetches the config first to resolve that id. |
| scaleway_iam_list_saml_certificatesA | List certificates registered for SAML SSO validation. |
| scaleway_iam_add_saml_certificateA | Register a new signing certificate for SAML SSO. ORG-WIDE BLAST RADIUS: this changes how EVERYONE in the Organization signs in. A misconfigured IdP entity_id/SSO URL, or an expired/wrong certificate, can lock every user out of the console at once - console-based recovery is also gated by this policy if it fails. Verify the IdP-side configuration is correct BEFORE calling this, and keep at least one non-SAML login method (password) available on your own account as a fallback. Requires confirm=true. UNVERIFIED FIELD SHAPE: the exact request body was never live-tested while building this tool (to avoid repeating the empty-body incident documented in docs/gotchas.md) - the PEM certificate is sent under 'certificate', matching Scaleway's SAML certificate conventions elsewhere, but this is a best-effort guess pending a real live test. |
| scaleway_iam_get_saml_certificateA | Read one SAML certificate's metadata (fingerprint, expiry) by id. PATH UNCONFIRMED: scaleway_iam_list_saml_certificates's path (/saml/{saml_id}/certificates) is live-verified; this single-item path follows the same nesting convention but could not be confirmed without recreating a live SAML config (deliberately avoided - see docs/gotchas.md). May need correction on first real use. |
| scaleway_iam_delete_saml_certificateA | PERMANENTLY remove one SAML certificate. Requires confirm=true. If this is the certificate actively validating SSO assertions, SSO breaks immediately for everyone until a replacement is added - check scaleway_iam_list_saml_certificates for other valid certificates first if SSO must stay available. PATH UNCONFIRMED - see scaleway_iam_get_saml_certificate's description. |
| scaleway_iam_get_scim_configA | Read the Organization's SCIM config (id, created_at). Returns an error if SCIM was never enabled - that is the expected default state. |
| scaleway_iam_enable_scimA | Enable SCIM (lets an external identity provider create/update/deactivate Users automatically). Requires confirm=true. Live-probed 2026-08-18: this endpoint takes no request fields - enabling alone does not grant any provisioning access by itself, a token must be created separately (scaleway_iam_create_scim_token) and configured in the IdP before anything can actually provision. |
| scaleway_iam_disable_scimA | PERMANENTLY disable SCIM. Requires confirm=true. Provisioning from the IdP stops immediately - including DEPROVISIONING: if the IdP was the mechanism offboarding relies on to remove departed Users, that stops working silently until re-enabled. Confirmed via live probe: the working endpoint is a top-level DELETE by the SCIM config's own id, NOT the org-nested path (which 405s) - this tool fetches the config first. |
| scaleway_iam_list_scim_tokensA | List SCIM provisioning tokens. Never includes the token secret (only visible once, at creation, per scaleway_iam_create_scim_token). |
| scaleway_iam_create_scim_tokenA | Generate a new SCIM token. IMPORTANT: like an API key's secret, this token is returned ONLY in this response - capture it immediately and configure it in the identity provider, it cannot be re-fetched later. Requires confirm=true - this token grants the IdP power to create/modify/deactivate Users. FIELD SHAPE UNVERIFIED: never live-tested (see docs/gotchas.md) - 'description' is a best-effort guess matching every other credential-creation tool's convention in this server. |
| scaleway_iam_delete_scim_tokenA | PERMANENTLY revoke a SCIM token. Requires confirm=true. IdP provisioning breaks immediately until a new token is created and configured in the IdP. PATH UNCONFIRMED: follows the same nesting convention as scaleway_iam_list_scim_tokens (/scim/{scim_id}/tokens) but the single-item path could not be live-verified without recreating a live SCIM config - deliberately avoided, see docs/gotchas.md. |
| scaleway_iam_get_security_settingsA | Read org-wide auth policy: password-renewal enforcement, grace period duration, login-attempt lockout threshold, max session/API-key-expiration durations. |
| scaleway_iam_update_security_settingsA | Change org-wide auth policy. ORG-WIDE BLAST RADIUS, BOTH DIRECTIONS: tightening (e.g. lowering login_attempts_before_locked, enabling enforce_password_renewal) can lock out users who haven't met the new requirement yet; loosening (raising session/expiration durations) weakens the org's security posture for everyone. Only the fields you pass are changed - live-verified that an empty call leaves every current value untouched, unlike SAML/SCIM's enable endpoints (see docs/gotchas.md). Requires confirm=true. |
| scaleway_s3_create_bucketA | Create a new, empty Object Storage bucket, private by default. Configure it afterwards with the scaleway_s3_*bucket* config tools (visibility, versioning, tags, CORS, website, lifecycle, encryption). Object Lock cannot be enabled at creation on Scaleway (the S3 create-time flag is silently ignored) - enable versioning then scaleway_s3_enable_object_lock afterwards. |
| scaleway_s3_list_bucketsA | List Object Storage buckets in one region (buckets are region-scoped on Scaleway, unlike AWS's account-wide bucket namespace). |
| scaleway_s3_delete_bucketA | PERMANENTLY delete an empty Object Storage bucket. Requires confirm=true. Fails if the bucket still contains objects. |
| scaleway_s3_get_bucket_taggingA | Read a bucket's tags (key/value pairs). Errors with NoSuchTagSet if no tags are set. |
| scaleway_s3_put_bucket_taggingA | Set a bucket's tags. FULL-REPLACE semantics: the provided list becomes the complete tag set - tags not in the list are removed. |
| scaleway_s3_delete_bucket_taggingA | Remove ALL tags from a bucket. Requires confirm=true. Reversible in the sense that tags can be re-applied, but the current set is lost. |
| scaleway_s3_get_bucket_corsA | Read a bucket's CORS rules. Errors with NoSuchCORSConfiguration if none are set. |
| scaleway_s3_put_bucket_corsA | Set a bucket's CORS rules. FULL-REPLACE semantics: the provided list becomes the complete rule set - existing rules not in the list are removed. This loosens or restricts browser cross-origin access to the bucket. |
| scaleway_s3_delete_bucket_corsA | Remove ALL CORS rules from a bucket - browsers regain no cross-origin access (default-deny). |
| scaleway_s3_get_bucket_versioningA | Read a bucket's versioning state: '' (never enabled), 'Enabled', or 'Suspended'. Note: once Object Lock is enabled on a bucket, versioning is frozen at Enabled and cannot be suspended (live-verified 2026-08-18). |
| scaleway_s3_set_bucket_versioningA | Set versioning to Enabled or Suspended. Enabling keeps every object version (deletes create delete markers instead of removing data). Suspending requires confirm=true: new writes stop versioning, existing versions are retained. VERSIONING CAN NEVER GO BACK TO 'never-enabled' - suspending is not disabling. Suspending fails outright (InvalidBucketState) while Object Lock is enabled on the bucket. |
| scaleway_s3_get_bucket_websiteA | Read a bucket's static-website configuration. Errors with NoSuchWebsiteConfiguration if none is set. |
| scaleway_s3_put_bucket_websiteA | Configure the bucket for static-website serving (index document, optional error document). FULL-REPLACE. Requires confirm=true because this publishes an HTTP website endpoint for the bucket. The website endpoint follows Scaleway's s3-website..scw.cloud naming - check the console bucket page for the exact URL; anonymous website access on Scaleway additionally depends on the bucket's visibility (see scaleway_s3_set_bucket_visibility). |
| scaleway_s3_delete_bucket_websiteA | Remove the static-website configuration - the website endpoint stops serving. |
| scaleway_s3_get_bucket_visibilityA | Read a bucket's visibility, derived from its ACL grants: 'public' if the anonymous AllUsers group holds any grant, otherwise 'private'. Returns the raw grants too. |
| scaleway_s3_set_bucket_visibilityA | Set bucket visibility via canned ACL: 'public-read' grants the anonymous internet READ on ALL objects (the console's 'Public' setting) - requires confirm=true; 'private' restores owner-only access. Note Bucket Policies (scaleway_s3_put_bucket_policy) are the finer-grained mechanism - this tool is the coarse on/off switch. |
| scaleway_s3_get_bucket_lifecycleA | Read a bucket's lifecycle rules. Errors with NoSuchLifecycleConfiguration if none are set. |
| scaleway_s3_put_bucket_lifecycleA | Set a bucket's lifecycle rules. FULL-REPLACE: the provided list becomes the complete rule set. DESTRUCTIVE: rules with expiration permanently DELETE matching objects once they take effect - requires confirm=true regardless of rule content. Rules apply to objects stored with Scaleway storage classes; transition targets Scaleway classes (ONEZONE_IA, GLACIER). |
| scaleway_s3_delete_bucket_lifecycleA | Remove ALL lifecycle rules. Requires confirm=true: objects that would have expired keep living (rule removal stops pending deletions - dangerous in the opposite direction of putting rules). |
| scaleway_s3_get_bucket_encryptionA | Read the bucket's S3 default-encryption configuration. A fresh bucket returns an EMPTY config (HTTP 200, not an error, unlike AWS which errors) rather than 'AES256 always on' - this is a REAL, toggleable setting, not inert metadata: live-verified 2026-08-18 via the console's Settings tab, put_bucket_encryption/delete_bucket_encryption visibly flip the bucket's 'Encryption type' there between 'Disabled' and 'SSE-ONE encryption with Scaleway Object Native Encryption keys'. (An earlier version of this description claimed the config was declarative-only with no effect - that was wrong, corrected after console cross-validation.) |
| scaleway_s3_put_bucket_encryptionA | Set the bucket's S3 default-encryption configuration (AES256). Live-verified 2026-08-18: this is a real setting, not S3-API-compatibility filler - the console's Settings tab shows 'Encryption type' flip from 'Disabled' to 'SSE-ONE encryption with Scaleway Object Native Encryption keys' immediately after this call. |
| scaleway_s3_delete_bucket_encryptionA | Remove the bucket's default-encryption configuration. Live-verified 2026-08-18: this reverts the console's 'Encryption type' back to 'Disabled' - a real change, not a no-op on inert metadata. |
| scaleway_s3_get_object_lockA | Read whether Object Lock (WORM protection) is enabled on the bucket. ObjectLockConfigurationNotFoundError means NOT enabled - there is no 'disabled' state, the config simply does not exist until first enabled. |
| scaleway_s3_enable_object_lockA | Enable Object Lock (WORM: object versions can never be deleted before their retention expires). IRREVERSIBLE: once enabled it can NEVER be disabled or removed - Scaleway rejects the disable request at the XML-schema level, and versioning becomes permanently frozen at Enabled (both live-verified 2026-08-18). Prerequisite: versioning must be Enabled first - pass enable_versioning_if_needed=true to let this tool do that, otherwise the API rejects with InvalidBucketState. Creating a bucket with object lock at creation time is NOT possible on Scaleway: the S3 CreateBucket flag ObjectLockEnabledForBucket is silently ignored (live-verified 2026-08-18) - this tool is the only working path. An empty locked bucket can still be deleted. |
| scaleway_s3_get_bucket_policyA | Read the current Bucket Policy JSON attached to an Object Storage bucket. Returns an error if the bucket has no policy. |
| scaleway_s3_put_bucket_policyA | Replace a bucket's entire Bucket Policy with the given JSON document. This is the bucket-scoped half of access control - see scaleway_iam_create_policy's description for why both an IAM Policy and a Bucket Policy are needed together. Recommended safety net: include a statement granting the bucket owner's own user_id full access (mirrors the console's 'Maintain access to bucket' checkbox) so a mistake here can never lock the account out of its own bucket. |
| scaleway_s3_delete_bucket_policyA | Remove a bucket's Bucket Policy entirely. Requires confirm=true. Any principal relying only on this policy loses access to the bucket immediately. |
| scaleway_s3_put_objectA | Upload (or overwrite) a single object. Single-part only - see the 'content' field for the size ceiling and the binary-payload encoding. |
| scaleway_s3_get_objectA | Download a single object's content and metadata. Content is returned as UTF-8 text when it round-trips cleanly as text, otherwise as base64 (see 'encoding' in the result). Like every tool in this server, the result is truncated to MAX_OUTPUT_CHARS - for large objects, use scaleway_s3_generate_presigned_url instead. |
| scaleway_s3_list_objectsA | List object keys in a bucket, optionally scoped by prefix and grouped by delimiter (like folders). Paginated - pass the returned next_continuation_token to continue. |
| scaleway_s3_head_objectA | Fetch an object's metadata (content-type, size, etag, last-modified, user metadata) without transferring its body. Cheaper than scaleway_s3_get_object when you don't need the content. |
| scaleway_s3_copy_objectA | Server-side copy of one object to a new bucket/key, without downloading and re-uploading. Source and destination must be in the same region. |
| scaleway_s3_delete_objectA | PERMANENTLY delete one object. Requires confirm=true. |
| scaleway_s3_delete_objectsA | PERMANENTLY delete up to 1000 explicitly-named objects in one call. Requires confirm=true. No prefix/wildcard form - never wipes a bucket recursively. |
| scaleway_s3_get_object_tagsA | Read the key/value tag set attached to an object. |
| scaleway_s3_put_object_tagsA | Replace an object's entire tag set. This REPLACES, it does not merge - see the 'tags' field. |
| scaleway_s3_generate_presigned_urlA | Generate a URL that grants direct GET or PUT access to one object for a limited time, without exposing this server's credential. Useful for handing a download/upload link to something outside MCP, or for content too large for scaleway_s3_get_object/put_object's inline transfer. |
| scaleway_audit_list_eventsA | List Audit Trail events (who did what, when, from where, against what) across this Organization - the same data as the console's Audit Trail > Events page. Requires the AuditTrailReadOnly permission set on THIS server's own credential; if every call fails with permissions_denied, that's very likely why - grant it via scaleway_iam_set_policy_rules (organization scope). Defaults to the last 24 hours. Pagination is cursor-based with no total_count - max_pages is a safety cap, not a completeness guarantee; the response says whether it was truncated and includes the last page token to continue from. |
| scaleway_audit_list_authentication_eventsA | List authentication events (logins, API-key/token auth, MFA outcomes - success/failure, origin, country, method) across this Organization. A separate endpoint from scaleway_audit_list_events: those cover API/resource activity, these cover authentication activity only. Requires the AuditTrailReadOnly permission set on THIS server's own credential; if every call fails with permissions_denied, that's very likely why - grant it via scaleway_iam_set_policy_rules (organization scope). Defaults to the last 24 hours. Cursor-based pagination with no total_count, same caveats as scaleway_audit_list_events. |
| scaleway_audit_list_system_eventsA | List system events - actions performed by Scaleway's own systems on your resources (product_name / system_name / kind), rather than by a user or application. The third event stream besides scaleway_audit_list_events (API activity) and scaleway_audit_list_authentication_events (authentication). Requires the AuditTrailReadOnly permission set on THIS server's own credential; if every call fails with permissions_denied, that's very likely why - grant it via scaleway_iam_set_policy_rules (organization scope). Defaults to the last 24 hours (the API's own default window is 1 hour, so this tool pins it explicitly). Cursor-based pagination with no total_count, same caveats as scaleway_audit_list_events. |
| scaleway_audit_list_combined_eventsA | List all three Audit Trail event streams in one chronological feed - each event is tagged with its kind (api, auth, or system) and compacted per-kind. Use this when investigating a timeline across streams; use the per-stream tools (scaleway_audit_list_events, _list_authentication_events, _list_system_events) when one stream is enough. Requires the AuditTrailReadOnly permission set on THIS server's own credential; if every call fails with permissions_denied, that's very likely why - grant it via scaleway_iam_set_policy_rules (organization scope). Defaults to the last 24 hours. Cursor-based pagination with no total_count, same caveats as scaleway_audit_list_events. |
| scaleway_audit_get_last_events_overviewA | Get the snapshot of most recent Audit Trail events the console shows on the Audit Trail landing page - the last handful of api events, no filters, no pagination. Handy as a cheap 'anything happening lately?' check before running a full paginated query. Requires the AuditTrailReadOnly permission set on THIS server's own credential; if every call fails with permissions_denied, that's very likely why - grant it via scaleway_iam_set_policy_rules (organization scope). |
| scaleway_audit_list_productsA | List the products/services integrated with Audit Trail, with their service and method names - the catalog behind the resource_type / product_name / service_name / method_name filters of the scaleway_audit_list_* event tools. Call this when a filter value is rejected or to discover valid values before querying. Requires the AuditTrailReadOnly permission set on THIS server's own credential; if every call fails with permissions_denied, that's very likely why - grant it via scaleway_iam_set_policy_rules (organization scope). |
| scaleway_audit_list_alert_rulesA | List Scaleway's preconfigured Audit Trail alert rules for this Organization and their current status (enabled/disabled) - the console's Audit Trail > Alerts page. These rules are defined by Scaleway and cannot be created or deleted, only enabled/disabled. Needs more than AuditTrailReadOnly on THIS server's own credential (read-only covers just the query tools) - if the call fails with permissions_denied, grant the Audit Trail write permission set via scaleway_iam_set_policy_rules. |
| scaleway_audit_set_alert_rules_enabledA | Enable or disable specific preconfigured Audit Trail alert rules by ID. Touches ONLY the listed rules - the enabled/disabled state of every other rule is left unchanged (unlike scaleway_audit_replace_enabled_alert_rules, which rewrites the whole enabled set). Get IDs from scaleway_audit_list_alert_rules. Live-verified 2026-08-18: an unknown rule ID rejects the whole request (HTTP 404) - no partial application. Needs more than AuditTrailReadOnly on THIS server's own credential (read-only covers just the query tools) - if the call fails with permissions_denied, grant the Audit Trail write permission set via scaleway_iam_set_policy_rules. |
| scaleway_audit_replace_enabled_alert_rulesA | Atomically replace the COMPLETE set of enabled preconfigured alert rules: after this call, exactly the listed rules are enabled and every other preconfigured rule is disabled - including ones you did not mention. Prefer scaleway_audit_set_alert_rules_enabled (additive) unless you genuinely want full-replace semantics, e.g. syncing to a declared state. Live-verified 2026-08-18: an unknown rule ID rejects the whole request (HTTP 404) - no partial application. Requires confirm=true. Needs more than AuditTrailReadOnly on THIS server's own credential (read-only covers just the query tools) - if the call fails with permissions_denied, grant the Audit Trail write permission set via scaleway_iam_set_policy_rules. |
| scaleway_audit_list_custom_alert_rulesA | List this Organization's custom Audit Trail alert rules (CEL-expression alerts you created) with their query, evaluation window, occurrence threshold, severity, and enabled/disabled status. Distinct from scaleway_audit_list_alert_rules, which lists Scaleway's preconfigured rules. Needs more than AuditTrailReadOnly on THIS server's own credential (read-only covers just the query tools) - if the call fails with permissions_denied, grant the Audit Trail write permission set via scaleway_iam_set_policy_rules. CAVEAT (live-verified 2026-08-18): Scaleway documents the custom-alert-rules endpoints, but the deployed API (fr-par) returns HTTP 501 'unknown method' for every custom-alert-rules method - this tool is kept for when Scaleway implements them and currently surfaces that error verbatim. Don't retry on 501; the preconfigured rules via scaleway_audit_list_alert_rules are the working alternative today. |
| scaleway_audit_create_custom_alert_ruleA | Create a custom Audit Trail alert rule: a CEL expression evaluated against incoming audit events, firing when at least |
| scaleway_audit_update_custom_alert_ruleA | Update a custom alert rule's metadata (name/description) in place. The API exposes ONLY these two fields on update - the query, evaluation window, occurrences, and severity are immutable after creation; changing the logic means create-new + delete-old. Needs more than AuditTrailReadOnly on THIS server's own credential (read-only covers just the query tools) - if the call fails with permissions_denied, grant the Audit Trail write permission set via scaleway_iam_set_policy_rules. CAVEAT (live-verified 2026-08-18): Scaleway documents the custom-alert-rules endpoints, but the deployed API (fr-par) returns HTTP 501 'unknown method' for every custom-alert-rules method - this tool is kept for when Scaleway implements them and currently surfaces that error verbatim. Don't retry on 501; the preconfigured rules via scaleway_audit_list_alert_rules are the working alternative today. |
| scaleway_audit_delete_custom_alert_ruleA | PERMANENTLY delete a custom alert rule by ID. Requires confirm=true. Irreversible - the rule's definition is gone, though past events it recorded remain in the event streams. Needs more than AuditTrailReadOnly on THIS server's own credential (read-only covers just the query tools) - if the call fails with permissions_denied, grant the Audit Trail write permission set via scaleway_iam_set_policy_rules. CAVEAT (live-verified 2026-08-18): Scaleway documents the custom-alert-rules endpoints, but the deployed API (fr-par) returns HTTP 501 'unknown method' for every custom-alert-rules method - this tool is kept for when Scaleway implements them and currently surfaces that error verbatim. Don't retry on 501; the preconfigured rules via scaleway_audit_list_alert_rules are the working alternative today. |
| scaleway_audit_set_custom_alert_rules_enabledA | Enable or disable specific custom alert rules by ID. Touches ONLY the listed rules - the state of every other custom rule is left unchanged (unlike scaleway_audit_replace_enabled_custom_alert_rules, which rewrites the whole enabled set). Get IDs from scaleway_audit_list_custom_alert_rules. Needs more than AuditTrailReadOnly on THIS server's own credential (read-only covers just the query tools) - if the call fails with permissions_denied, grant the Audit Trail write permission set via scaleway_iam_set_policy_rules. CAVEAT (live-verified 2026-08-18): Scaleway documents the custom-alert-rules endpoints, but the deployed API (fr-par) returns HTTP 501 'unknown method' for every custom-alert-rules method - this tool is kept for when Scaleway implements them and currently surfaces that error verbatim. Don't retry on 501; the preconfigured rules via scaleway_audit_list_alert_rules are the working alternative today. |
| scaleway_audit_replace_enabled_custom_alert_rulesA | Atomically replace the COMPLETE set of enabled custom alert rules: after this call, exactly the listed custom rules are enabled and every other custom rule is disabled - including ones you did not mention. Prefer scaleway_audit_set_custom_alert_rules_enabled (additive) unless you genuinely want full-replace semantics. Requires confirm=true. Needs more than AuditTrailReadOnly on THIS server's own credential (read-only covers just the query tools) - if the call fails with permissions_denied, grant the Audit Trail write permission set via scaleway_iam_set_policy_rules. CAVEAT (live-verified 2026-08-18): Scaleway documents the custom-alert-rules endpoints, but the deployed API (fr-par) returns HTTP 501 'unknown method' for every custom-alert-rules method - this tool is kept for when Scaleway implements them and currently surfaces that error verbatim. Don't retry on 501; the preconfigured rules via scaleway_audit_list_alert_rules are the working alternative today. |
| scaleway_audit_list_export_jobsA | List this Organization's Audit Trail export jobs - recurring jobs shipping audit events to an Object Storage bucket (S3 destination config, last run, last status). The console's Audit Trail > Exports page. Needs more than AuditTrailReadOnly on THIS server's own credential (read-only covers just the query tools) - if the call fails with permissions_denied, grant the Audit Trail write permission set via scaleway_iam_set_policy_rules. |
| scaleway_audit_create_export_jobA | Create an export job shipping Audit Trail events to an Object Storage bucket (S3 destination). The bucket must already exist and be writable - create it first (e.g. scaleway_s3_create_bucket). Live-verified 2026-08-18: creation triggers an IMMEDIATE backfill, not just a future cadence - a fresh job wrote ~6 days of past daily log objects (one JSON file per day, e.g. '2026/07/12/logs_*.json') into the bucket within seconds of creation. scaleway_audit_delete_export_job does not delete these - if you created a bucket just to test this, you'll need to empty it (object-level operations are out of scope for this server) before scaleway_s3_delete_bucket will succeed. Check last_run_at / last_status via scaleway_audit_list_export_jobs afterwards for the ongoing cadence. Needs more than AuditTrailReadOnly on THIS server's own credential (read-only covers just the query tools) - if the call fails with permissions_denied, grant the Audit Trail write permission set via scaleway_iam_set_policy_rules. |
| scaleway_audit_delete_export_jobA | PERMANENTLY delete an export job by ID. Requires confirm=true. Stops future exports; objects already written to the destination bucket are NOT deleted by this call. Needs more than AuditTrailReadOnly on THIS server's own credential (read-only covers just the query tools) - if the call fails with permissions_denied, grant the Audit Trail write permission set via scaleway_iam_set_policy_rules. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/logic-arts-official/scaleway-ops-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server