Skip to main content
Glama
J-MaFf

s2-netbox-mcp

by J-MaFf

get_picture

Read-only

Retrieve a person's photo ID image from S2 NetBox by PERSONID. Returns Base64 JPEG data plus photo URL and details; use the URL to identify the file before requesting the image.

Instructions

Returns a person's photo ID image (wraps NBAPI GetPicture). The response's PICTURE field is a Base64-encoded JPEG and may be very large — a full-size badge photo runs to hundreds of kilobytes of Base64 text, so prefer PICTUREURL when you only need to identify the file. The response also carries PERSONID, PICTUREURL, LASTNAME, FIRSTNAME and LASTMOD. The payload is passed through unmodified: this tool neither decodes, resizes nor truncates the Base64 string. A person with no photo answers FAIL with "No picture URL for this person ID" or "Picture file does not exist"; an oversized image answers "Person picture image file size exceeds maximum to be returned/exported".

Input Schema

NameRequiredDescriptionDefault
PERSONIDYesRequired. The PERSONID of the person whose picture should be retrieved.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.4.0

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the readOnlyHint, it discloses payload size ('hundreds of kilobytes of Base64'), the pass-through behavior ('neither decodes, resizes nor truncates'), and verbatim FAIL messages for missing and oversized photos. This is exactly the context annotations cannot carry and it materially changes how an agent should call the tool.

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?

Front-loaded with the purpose, then size warning, then return fields, then error cases — a logical order with no filler. Some sentences are long and the field list borders on restating the response, but each element carries information an agent needs.

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

Completeness5/5

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

There is no output schema, so the description compensates fully by enumerating the returned fields (PICTURE, PERSONID, PICTUREURL, LASTNAME, FIRSTNAME, LASTMOD), the PICTURE encoding, and every known failure mode. Nothing needed to call or interpret the call is missing.

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

Parameters3/5

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

The single PERSONID parameter is already fully documented in the schema at 100% coverage, so the description adds nothing about parameter format or accepted values. Baseline 3 applies; the 'no picture URL for this person ID' failure note is error behavior, not parameter semantics.

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 ('Returns a person's photo ID image') plus the underlying API it wraps, and the size/prefer-PICTUREURL note makes it immediately distinguishable from generic person getters like get_person. An agent knows exactly what this returns without opening the schema.

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

Usage Guidelines4/5

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

Explicitly advises 'prefer PICTUREURL when you only need to identify the file', giving a clear condition for avoiding the heavyweight call, and names the failure cases (no photo, oversized image). It does not compare against sibling tools such as get_person or search_person_data, so it stops short of full alternative routing.

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