naftiko: 1.0.0-alpha2 info: label: Looker API — User description: 'Looker API — User. 9 operations. Lead operation: Looker List All Users. Self-contained Naftiko capability covering one Looker business surface.' tags: - Looker - User created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: LOOKER_API_KEY: LOOKER_API_KEY capability: consumes: - type: http namespace: looker-user baseUri: https://{instance}.looker.com/api/4.0 description: Looker API — User business capability. Self-contained, no shared references. resources: - name: users path: /users operations: - name: allusers method: GET description: Looker List All Users outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: sorts in: query type: string description: Sort fields (e.g. last_name asc, created_at desc) - name: ids in: query type: string description: Comma-separated list of user IDs to retrieve - name: createuser method: POST description: Looker Create a User outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: users-me path: /users/me operations: - name: me method: GET description: Looker Get Current User outputRawFormat: json outputParameters: - name: result type: object value: $. - name: users-search path: /users/search operations: - name: searchusers method: GET description: Looker Search Users outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: first_name in: query type: string description: Filter by first name - name: last_name in: query type: string description: Filter by last name - name: email in: query type: string description: Filter by email address - name: is_disabled in: query type: boolean description: Filter by disabled status - name: sorts in: query type: string description: Sort fields - name: users-user_id path: /users/{user_id} operations: - name: user method: GET description: Looker Get a User outputRawFormat: json outputParameters: - name: result type: object value: $. - name: updateuser method: PATCH description: Looker Update a User outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: deleteuser method: DELETE description: Looker Delete a User outputRawFormat: json outputParameters: - name: result type: object value: $. - name: users-user_id-roles path: /users/{user_id}/roles operations: - name: userroles method: GET description: Looker Get User Roles outputRawFormat: json outputParameters: - name: result type: object value: $. - name: setuserroles method: PUT description: Looker Set User Roles outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true authentication: type: bearer token: '{{env.LOOKER_API_KEY}}' exposes: - type: rest namespace: looker-user-rest port: 8080 description: REST adapter for Looker API — User. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/users name: users description: REST surface for users. operations: - method: GET name: allusers description: Looker List All Users call: looker-user.allusers with: sorts: rest.sorts ids: rest.ids outputParameters: - type: object mapping: $. - method: POST name: createuser description: Looker Create a User call: looker-user.createuser with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/users/me name: users-me description: REST surface for users-me. operations: - method: GET name: me description: Looker Get Current User call: looker-user.me outputParameters: - type: object mapping: $. - path: /v1/users/search name: users-search description: REST surface for users-search. operations: - method: GET name: searchusers description: Looker Search Users call: looker-user.searchusers with: first_name: rest.first_name last_name: rest.last_name email: rest.email is_disabled: rest.is_disabled sorts: rest.sorts outputParameters: - type: object mapping: $. - path: /v1/users/{user-id} name: users-user-id description: REST surface for users-user_id. operations: - method: GET name: user description: Looker Get a User call: looker-user.user outputParameters: - type: object mapping: $. - method: PATCH name: updateuser description: Looker Update a User call: looker-user.updateuser with: body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deleteuser description: Looker Delete a User call: looker-user.deleteuser outputParameters: - type: object mapping: $. - path: /v1/users/{user-id}/roles name: users-user-id-roles description: REST surface for users-user_id-roles. operations: - method: GET name: userroles description: Looker Get User Roles call: looker-user.userroles outputParameters: - type: object mapping: $. - method: PUT name: setuserroles description: Looker Set User Roles call: looker-user.setuserroles with: body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: looker-user-mcp port: 9090 transport: http description: MCP adapter for Looker API — User. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: looker-list-all-users description: Looker List All Users hints: readOnly: true destructive: false idempotent: true call: looker-user.allusers with: sorts: tools.sorts ids: tools.ids outputParameters: - type: object mapping: $. - name: looker-create-user description: Looker Create a User hints: readOnly: false destructive: false idempotent: false call: looker-user.createuser with: body: tools.body outputParameters: - type: object mapping: $. - name: looker-get-current-user description: Looker Get Current User hints: readOnly: true destructive: false idempotent: true call: looker-user.me outputParameters: - type: object mapping: $. - name: looker-search-users description: Looker Search Users hints: readOnly: true destructive: false idempotent: true call: looker-user.searchusers with: first_name: tools.first_name last_name: tools.last_name email: tools.email is_disabled: tools.is_disabled sorts: tools.sorts outputParameters: - type: object mapping: $. - name: looker-get-user description: Looker Get a User hints: readOnly: true destructive: false idempotent: true call: looker-user.user outputParameters: - type: object mapping: $. - name: looker-update-user description: Looker Update a User hints: readOnly: false destructive: false idempotent: true call: looker-user.updateuser with: body: tools.body outputParameters: - type: object mapping: $. - name: looker-delete-user description: Looker Delete a User hints: readOnly: false destructive: true idempotent: true call: looker-user.deleteuser outputParameters: - type: object mapping: $. - name: looker-get-user-roles description: Looker Get User Roles hints: readOnly: true destructive: false idempotent: true call: looker-user.userroles outputParameters: - type: object mapping: $. - name: looker-set-user-roles description: Looker Set User Roles hints: readOnly: false destructive: false idempotent: true call: looker-user.setuserroles with: body: tools.body outputParameters: - type: object mapping: $.