Discourse · Capability

Discourse API Documentation — Admin

Discourse API Documentation — Admin. 11 operations. Lead operation: List users. Self-contained Naftiko capability covering one Discourse business surface.

Run with Naftiko DiscourseAdmin

What You Can Do

GET
Adminlistusers — List users
/v1/admin/users-json
GET
Adminlistusersflag — List users by flag
/v1/admin/users/list/flag-json
GET
Admingetuser — Get a user by id
/v1/admin/users/id-json
DELETE
Deleteuser — Delete a user
/v1/admin/users/id-json
PUT
Activateuser — Activate a user
/v1/admin/users/{id}/activate-json
PUT
Anonymizeuser — Anonymize a user
/v1/admin/users/{id}/anonymize-json
PUT
Deactivateuser — Deactivate a user
/v1/admin/users/{id}/deactivate-json
POST
Logoutuser — Log a user out
/v1/admin/users/{id}/log-out-json
PUT
Silenceuser — Silence a user
/v1/admin/users/{id}/silence-json
PUT
Suspenduser — Suspend a user
/v1/admin/users/{id}/suspend-json
POST
Refreshgravatar — Refresh gravatar
/v1/user-avatar/{username}/refresh-gravatar-json

MCP Tools

list-users

List users

read-only idempotent
list-users-flag

List users by flag

read-only idempotent
get-user-id

Get a user by id

read-only idempotent
delete-user

Delete a user

idempotent
activate-user

Activate a user

idempotent
anonymize-user

Anonymize a user

idempotent
deactivate-user

Deactivate a user

idempotent
log-user-out

Log a user out

silence-user

Silence a user

idempotent
suspend-user

Suspend a user

idempotent
refresh-gravatar

Refresh gravatar

Capability Spec

discourse-admin.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Discourse API Documentation — Admin
  description: 'Discourse API Documentation — Admin. 11 operations. Lead operation: List users. Self-contained Naftiko capability
    covering one Discourse business surface.'
  tags:
  - Discourse
  - Admin
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    DISCOURSE_API_KEY: DISCOURSE_API_KEY
capability:
  consumes:
  - type: http
    namespace: discourse-admin
    baseUri: https://{defaultHost}
    description: Discourse API Documentation — Admin business capability. Self-contained, no shared references.
    resources:
    - name: admin-users.json
      path: /admin/users.json
      operations:
      - name: adminlistusers
        method: GET
        description: List users
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: order
          in: query
          type: string
        - name: asc
          in: query
          type: string
        - name: page
          in: query
          type: integer
        - name: show_emails
          in: query
          type: boolean
          description: Include user email addresses in response. These requests will
        - name: stats
          in: query
          type: boolean
          description: Include user stats information
        - name: email
          in: query
          type: string
          description: Filter to the user with this email address
        - name: ip
          in: query
          type: string
          description: Filter to users with this IP address
    - name: admin-users-list-flag}.json
      path: /admin/users/list/{flag}.json
      operations:
      - name: adminlistusersflag
        method: GET
        description: List users by flag
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: flag
          in: path
          type: string
          required: true
        - name: order
          in: query
          type: string
        - name: asc
          in: query
          type: string
        - name: page
          in: query
          type: integer
        - name: show_emails
          in: query
          type: boolean
          description: Include user email addresses in response. These requests will
        - name: stats
          in: query
          type: boolean
          description: Include user stats information
        - name: email
          in: query
          type: string
          description: Filter to the user with this email address
        - name: ip
          in: query
          type: string
          description: Filter to users with this IP address
    - name: admin-users-id}.json
      path: /admin/users/{id}.json
      operations:
      - name: admingetuser
        method: GET
        description: Get a user by id
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
      - name: deleteuser
        method: DELETE
        description: Delete a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: admin-users-id-activate.json
      path: /admin/users/{id}/activate.json
      operations:
      - name: activateuser
        method: PUT
        description: Activate a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
    - name: admin-users-id-anonymize.json
      path: /admin/users/{id}/anonymize.json
      operations:
      - name: anonymizeuser
        method: PUT
        description: Anonymize a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
    - name: admin-users-id-deactivate.json
      path: /admin/users/{id}/deactivate.json
      operations:
      - name: deactivateuser
        method: PUT
        description: Deactivate a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
    - name: admin-users-id-log_out.json
      path: /admin/users/{id}/log_out.json
      operations:
      - name: logoutuser
        method: POST
        description: Log a user out
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
    - name: admin-users-id-silence.json
      path: /admin/users/{id}/silence.json
      operations:
      - name: silenceuser
        method: PUT
        description: Silence a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: admin-users-id-suspend.json
      path: /admin/users/{id}/suspend.json
      operations:
      - name: suspenduser
        method: PUT
        description: Suspend a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: user_avatar-username-refresh_gravatar.json
      path: /user_avatar/{username}/refresh_gravatar.json
      operations:
      - name: refreshgravatar
        method: POST
        description: Refresh gravatar
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: username
          in: path
          type: string
          required: true
  exposes:
  - type: rest
    namespace: discourse-admin-rest
    port: 8080
    description: REST adapter for Discourse API Documentation — Admin. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/admin/users-json
      name: admin-users-json
      description: REST surface for admin-users.json.
      operations:
      - method: GET
        name: adminlistusers
        description: List users
        call: discourse-admin.adminlistusers
        with:
          order: rest.order
          asc: rest.asc
          page: rest.page
          show_emails: rest.show_emails
          stats: rest.stats
          email: rest.email
          ip: rest.ip
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/admin/users/list/flag-json
      name: admin-users-list-flag-json
      description: REST surface for admin-users-list-flag}.json.
      operations:
      - method: GET
        name: adminlistusersflag
        description: List users by flag
        call: discourse-admin.adminlistusersflag
        with:
          flag: rest.flag
          order: rest.order
          asc: rest.asc
          page: rest.page
          show_emails: rest.show_emails
          stats: rest.stats
          email: rest.email
          ip: rest.ip
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/admin/users/id-json
      name: admin-users-id-json
      description: REST surface for admin-users-id}.json.
      operations:
      - method: GET
        name: admingetuser
        description: Get a user by id
        call: discourse-admin.admingetuser
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: deleteuser
        description: Delete a user
        call: discourse-admin.deleteuser
        with:
          id: rest.id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/admin/users/{id}/activate-json
      name: admin-users-id-activate-json
      description: REST surface for admin-users-id-activate.json.
      operations:
      - method: PUT
        name: activateuser
        description: Activate a user
        call: discourse-admin.activateuser
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/admin/users/{id}/anonymize-json
      name: admin-users-id-anonymize-json
      description: REST surface for admin-users-id-anonymize.json.
      operations:
      - method: PUT
        name: anonymizeuser
        description: Anonymize a user
        call: discourse-admin.anonymizeuser
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/admin/users/{id}/deactivate-json
      name: admin-users-id-deactivate-json
      description: REST surface for admin-users-id-deactivate.json.
      operations:
      - method: PUT
        name: deactivateuser
        description: Deactivate a user
        call: discourse-admin.deactivateuser
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/admin/users/{id}/log-out-json
      name: admin-users-id-log-out-json
      description: REST surface for admin-users-id-log_out.json.
      operations:
      - method: POST
        name: logoutuser
        description: Log a user out
        call: discourse-admin.logoutuser
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/admin/users/{id}/silence-json
      name: admin-users-id-silence-json
      description: REST surface for admin-users-id-silence.json.
      operations:
      - method: PUT
        name: silenceuser
        description: Silence a user
        call: discourse-admin.silenceuser
        with:
          id: rest.id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/admin/users/{id}/suspend-json
      name: admin-users-id-suspend-json
      description: REST surface for admin-users-id-suspend.json.
      operations:
      - method: PUT
        name: suspenduser
        description: Suspend a user
        call: discourse-admin.suspenduser
        with:
          id: rest.id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/user-avatar/{username}/refresh-gravatar-json
      name: user-avatar-username-refresh-gravatar-json
      description: REST surface for user_avatar-username-refresh_gravatar.json.
      operations:
      - method: POST
        name: refreshgravatar
        description: Refresh gravatar
        call: discourse-admin.refreshgravatar
        with:
          username: rest.username
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: discourse-admin-mcp
    port: 9090
    transport: http
    description: MCP adapter for Discourse API Documentation — Admin. One tool per consumed operation, routed inline through
      this capability's consumes block.
    tools:
    - name: list-users
      description: List users
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: discourse-admin.adminlistusers
      with:
        order: tools.order
        asc: tools.asc
        page: tools.page
        show_emails: tools.show_emails
        stats: tools.stats
        email: tools.email
        ip: tools.ip
      outputParameters:
      - type: object
        mapping: $.
    - name: list-users-flag
      description: List users by flag
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: discourse-admin.adminlistusersflag
      with:
        flag: tools.flag
        order: tools.order
        asc: tools.asc
        page: tools.page
        show_emails: tools.show_emails
        stats: tools.stats
        email: tools.email
        ip: tools.ip
      outputParameters:
      - type: object
        mapping: $.
    - name: get-user-id
      description: Get a user by id
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: discourse-admin.admingetuser
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-user
      description: Delete a user
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: discourse-admin.deleteuser
      with:
        id: tools.id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: activate-user
      description: Activate a user
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: discourse-admin.activateuser
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: anonymize-user
      description: Anonymize a user
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: discourse-admin.anonymizeuser
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: deactivate-user
      description: Deactivate a user
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: discourse-admin.deactivateuser
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: log-user-out
      description: Log a user out
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: discourse-admin.logoutuser
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: silence-user
      description: Silence a user
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: discourse-admin.silenceuser
      with:
        id: tools.id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: suspend-user
      description: Suspend a user
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: discourse-admin.suspenduser
      with:
        id: tools.id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: refresh-gravatar
      description: Refresh gravatar
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: discourse-admin.refreshgravatar
      with:
        username: tools.username
      outputParameters:
      - type: object
        mapping: $.