MCP Object-Authz Lab
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LAB_MODE | No | Toggles the planted bug: 'vuln' for vulnerable, 'fixed' for fixed. | vuln |
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
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| whoamiA | Return the session (user + org) your token authenticates as. |
| note_listC | List the notes in your organization. |
| note_getC | Get one note by id. |
| note_createC | Create a note in your organization. |
| note_updateA | Update a note's body by id. |
| note_deleteC | Delete a note by id. |
| note_searchB | Search notes by substring. The optional org_id parameter restricts the scope (admin use). |
| note_batch_getA | Fetch multiple notes by id in a single call (up to 20 ids). |
| note_exportB | Export all notes for an organization. Pass org_id='*' for a global export (admin only). |
| note_admin_getA | Get any note by id, across organizations. Admin/support use only. |
| note_create_in_orgA | Create a note inside a specific organization (cross-team collaboration). The org_id parameter targets the destination org. |
| note_get_by_queryC | Fetch a single note by id, resolved through a filtered store query. |
| note_share_prepareB | Prepare an opaque share grant for one of your own notes, redeemable via note_share_redeem. |
| note_share_redeemA | Redeem an opaque share grant produced by note_share_prepare. |
| note_get_scopedB | List the caller's notes. Honors an X-Org-Id routing header set by the API gateway. |
| note_create_limitedA | Create a note with a per-client quota (max 3 notes). The quota is tracked by client identity. |
| note_batch_resolveC | Fetch multiple notes by id in a single batch call (up to 50 ids). Returns all requested notes. |
| note_get_by_token_scopeB | Get notes for the organization indicated by the token's scope claim. The token carries the intended scope. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
There are many overlapping read operations: note_get, note_get_by_query, note_get_scoped, note_get_by_token_scope, note_admin_get, and two batch getters. note_batch_resolve and note_batch_get especially are nearly indistinguishable, so an agent would struggle to pick the right tool for a simple fetch.
Most tools follow a consistent note_<action> pattern, e.g. note_list, note_get, note_create, note_update, note_delete. Minor deviations like whoami and the inconsistent note_batch_resolve versus note_batch_get keep it from being a perfect 5.
18 tools is above the comfortable 3-15 range and feels heavy for a notes/authz lab. Many read variants inflate the count when fewer, more distinct tools could express the same authorization scenarios.
The toolset covers the core note lifecycle: create, get, list, search, update, delete, export, plus authz-specific operations like admin access, org-scoped creation, token-scoped reads, and sharing. Minor gaps like share revocation and scoped update/delete variants exist, but core workflows are not dead-ended.