Skip to main content
Glama

Read access logs

access_log
Read-onlyIdempotent

Inspect individual local access events with match counts and a truncation flag to review specific allowed or denied requests. Use summaries when you only need counts without event records.

Instructions

Return individual local access events, newest first, with all-match counts and a truncation flag. Use access_log to inspect specific events; use access_summary for counts without event records. The event list is limited; summaries cover all matches. No credentials, network calls or writes; suitable for viewer scopes. Query strings, headers and bodies are absent.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "access_log"
  }
}

Input Schema

NameRequiredDescriptionDefault
appNo
whoNo
limitNo
sinceNo
untilNo
decisionNo

Output Schema

NameRequiredDescriptionDefault
eventsYes
summaryYes
truncatedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv0.3.0
    • addedOutput schema / properties / summary / additionalProperties
      Added value: +false
    • removedOutput schema / properties / summary / description
      Removed value: -"Counts, per-person counts and per-app counts/last-seen for all matching events; denied events never advance last-seen."
    • addedOutput schema / properties / summary / properties
      Added value: +{
      +  "allowed": {
      +    "type": "integer"
      +  },
      +  "apps": {
      +    "type": "array"
      +  },
      +  "count": {
      +    "type": "integer"
      +  },
      +  "denied": {
      +    "type": "integer"
      +  },
      +  "people": {
      +    "type": "array"
      +  },
      +  "reasons": {
      +    "type": "array"
      +  },
      +  "traffic": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "apps": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "allowed": {
      +              "type": "integer"
      +            },
      +            "app": {
      +              "type": "string"
      +            },
      +            "bytes_in": {
      +              "type": "integer"
      +            },
      +            "bytes_out": {
      +              "type": "integer"
      +            },
      +            "denied": {
      +              "type": "integer"
      +            },
      +            "last_allowed_at": {
      +              "format": "date-time",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "last_request_at": {
      +              "format": "date-time",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "requests": {
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "app",
      +            "requests",
      +            "allowed",
      +            "denied",
      +            "bytes_in",
      +            "bytes_out",
      +            "last_request_at",
      +            "last_allowed_at"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "http": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "allowed": {
      +            "type": "integer"
      +          },
      +          "bytes_in": {
      +            "type": "integer"
      +          },
      +          "bytes_out": {
      +            "type": "integer"
      +          },
      +          "denied": {
      +            "type": "integer"
      +          },
      +          "last_allowed_at": {
      +            "format": "date-time",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "last_request_at": {
      +            "format": "date-time",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "requests": {
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "requests",
      +          "allowed",
      +          "denied",
      +          "bytes_in",
      +          "bytes_out",
      +          "last_request_at",
      +          "last_allowed_at"
      +        ],
      +        "type": "object"
      +      },
      +      "people_apps": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "allowed": {
      +              "type": "integer"
      +            },
      +            "app": {
      +              "type": "string"
      +            },
      +            "bytes_in": {
      +              "type": "integer"
      +            },
      +            "bytes_out": {
      +              "type": "integer"
      +            },
      +            "denied": {
      +              "type": "integer"
      +            },
      +            "last_allowed_at": {
      +              "format": "date-time",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "last_request_at": {
      +              "format": "date-time",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "login": {
      +              "type": "string"
      +            },
      +            "requests": {
      +              "type": "integer"
      +            },
      +            "subject": {
      +              "type": "string"
      +            },
      +            "subject_kind": {
      +              "enum": [
      +                "human",
      +                "tagged",
      +                "public",
      +                "unknown"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "subject_kind",
      +            "app",
      +            "requests",
      +            "allowed",
      +            "denied",
      +            "bytes_in",
      +            "bytes_out",
      +            "last_request_at",
      +            "last_allowed_at"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "tcp": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "allowed": {
      +            "type": "integer"
      +          },
      +          "bytes_in": {
      +            "type": "integer"
      +          },
      +          "bytes_out": {
      +            "type": "integer"
      +          },
      +          "closed": {
      +            "type": "integer"
      +          },
      +          "connections": {
      +            "type": "integer"
      +          },
      +          "denied": {
      +            "type": "integer"
      +          },
      +          "gate_drops": {
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "connections",
      +          "allowed",
      +          "denied",
      +          "closed",
      +          "bytes_in",
      +          "bytes_out",
      +          "gate_drops"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "http",
      +      "people_apps",
      +      "apps",
      +      "tcp"
      +    ],
      +    "type": "object"
      +  }
      +}
    • addedOutput schema / properties / summary / required
      Added value: +[
      +  "count",
      +  "allowed",
      +  "denied",
      +  "people",
      +  "apps",
      +  "traffic"
      +]
  2. First observedv0.1.0

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), yet the description still adds real context: ordering, a truncation flag, absent payload fields (query strings, headers, bodies), and viewer-scope suitability. It stops short of state-rate/size limits on 'limited', but the additions are substantive rather than restatements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The return shape is front-loaded, and the routing sentence follows immediately, so the most decision-relevant facts come first. Five short sentences with minimal waste, though 'The event list is limited; summaries cover all matches' partly re-states the routing already given in the prior sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be explained here, and the safety profile is fully annotated. However, with six entirely undocumented parameters in both schema and description, an agent cannot construct a filtered query (e.g., valid timestamp format for since/until) without guessing, which leaves the definition incomplete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across six parameters (app, who, limit, since, until, decision), so the description must compensate and largely does not. It never names a parameter, and gives no hint about time formats for since/until, what 'who' accepts, or what the limit's maximum of 10000 means operationally. Only the vague phrase 'all-match counts' implies filtering exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Return individual local access events') plus ordering ('newest first'), counts, and a truncation flag. It draws an explicit boundary against the sibling access_summary, so an agent can pick between them without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use access_log to inspect specific events; use access_summary for counts without event records' names the alternative and the exact condition that selects it. The follow-up sentence ('The event list is limited; summaries cover all matches') reinforces the tradeoff so the agent knows when results will be incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.