Skip to main content
Glama
J-MaFf

s2-netbox-mcp

by J-MaFf

search_person_data

Find person records in S2 NetBox by matching filters like name, card number, email, or last-modified dates.

Instructions

Searches for person records matching the given criteria (wraps NBAPI SearchPersonData). Every documented SearchPersonData filter field is modeled explicitly; omit all filters to return every record.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
UDF1NoOptional. Search filter on user-defined field UDF1.
UDF2NoOptional. Search filter on user-defined field UDF2.
UDF3NoOptional. Search filter on user-defined field UDF3.
UDF4NoOptional. Search filter on user-defined field UDF4.
UDF5NoOptional. Search filter on user-defined field UDF5.
UDF6NoOptional. Search filter on user-defined field UDF6.
UDF7NoOptional. Search filter on user-defined field UDF7.
UDF8NoOptional. Search filter on user-defined field UDF8.
UDF9NoOptional. Search filter on user-defined field UDF9.
NOTESNoOptional. Match on the person record's notes text.
UDF10NoOptional. Search filter on user-defined field UDF10.
UDF11NoOptional. Search filter on user-defined field UDF11.
UDF12NoOptional. Search filter on user-defined field UDF12.
UDF13NoOptional. Search filter on user-defined field UDF13.
UDF14NoOptional. Search filter on user-defined field UDF14.
UDF15NoOptional. Search filter on user-defined field UDF15.
UDF16NoOptional. Search filter on user-defined field UDF16.
UDF17NoOptional. Search filter on user-defined field UDF17.
UDF18NoOptional. Search filter on user-defined field UDF18.
UDF19NoOptional. Search filter on user-defined field UDF19.
UDF20NoOptional. Search filter on user-defined field UDF20.
DELETEDNoOptional. Include/exclude deleted person records.
HOTSTAMPNoOptional. Match on a card hot-stamp number.
LASTNAMENoOptional. Match on the person's last name.
PERSONIDNoOptional. Match on a specific PERSONID.
FIRSTNAMENoOptional. Match on the person's first name.
CARDFORMATNoOptional. Match persons holding a card in this card format.
CARDSTATUSNoOptional. Match persons holding a card with this card status name.
MIDDLENAMENoOptional. Match on the person's middle name.
MSUENABLEDNoOptional. Match on whether MSU mobile credentials are enabled ("TRUE"/"FALSE").
ACCESSLEVELNoOptional. Match persons assigned this access level.
MOBILEPHONENoOptional. Match on the person's mobile phone number.
CONTACTEMAILNoOptional. Match on the person's office email address.
ALLPARTITIONSNoOptional. Search across all partitions.
NEWESTLASTMODNoOptional. Only include records last modified on/before this date/time.
OLDESTLASTMODNoOptional. Only include records last modified on/after this date/time.
RAWCARDNUMBERNoOptional. Match on a raw (unformatted) card number.
VEHICLELICNUMNoOptional. Match on a vehicle license plate number.
VEHICLETAGNUMNoOptional. Match on a vehicle tag number.
WILDCARDSEARCHNoOptional. Treat text filters as wildcard patterns.
CASEINSENSITIVENoOptional. Perform a case-insensitive match.
WANTCREDENTIALIDNoOptional. Include CREDENTIALID values on returned access cards.
ACCESSLEVELDETAILSNoOptional. Include full access level details in the response.
BLUEDIAMONDENABLEDNoOptional. Match on whether BlueDiamond mobile credentials are enabled ("TRUE"/"FALSE").

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changedv0.3.0
    • addedInput schema / properties / BLUEDIAMONDENABLED
      Added value: +{
      +  "description": "Optional. Match on whether BlueDiamond mobile credentials are enabled (\"TRUE\"/\"FALSE\").",
      +  "type": "string"
      +}
    • addedInput schema / properties / CARDFORMAT
      Added value: +{
      +  "description": "Optional. Match persons holding a card in this card format.",
      +  "type": "string"
      +}
    • addedInput schema / properties / CARDSTATUS
      Added value: +{
      +  "description": "Optional. Match persons holding a card with this card status name.",
      +  "type": "string"
      +}
    • addedInput schema / properties / CONTACTEMAIL
      Added value: +{
      +  "description": "Optional. Match on the person's office email address.",
      +  "type": "string"
      +}
    • addedInput schema / properties / MOBILEPHONE
      Added value: +{
      +  "description": "Optional. Match on the person's mobile phone number.",
      +  "type": "string"
      +}
    • addedInput schema / properties / MSUENABLED
      Added value: +{
      +  "description": "Optional. Match on whether MSU mobile credentials are enabled (\"TRUE\"/\"FALSE\").",
      +  "type": "string"
      +}
    • addedInput schema / properties / NOTES
      Added value: +{
      +  "description": "Optional. Match on the person record's notes text.",
      +  "type": "string"
      +}
    • addedInput schema / properties / VEHICLELICNUM
      Added value: +{
      +  "description": "Optional. Match on a vehicle license plate number.",
      +  "type": "string"
      +}
    • addedInput schema / properties / VEHICLETAGNUM
      Added value: +{
      +  "description": "Optional. Match on a vehicle tag number.",
      +  "type": "string"
      +}
  2. First observedv0.2.3

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only mentions wrapping NBAPI and the ability to omit filters; it does not describe pagination, response format, authentication needs, rate limits, or whether filters combine as AND/OR. For a search tool with 44 parameters, this is a significant gap in transparency about what happens when the tool is invoked.

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

Conciseness5/5

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

The description is two sentences with zero wasted words. It front-loads the primary purpose and immediately provides a key usage tip (omitting filters returns all records). This is efficient and scannable, earning a high score.

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

Completeness2/5

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

For a tool with 44 optional parameters and no output schema or annotations, the description is notably thin. It does not explain what the response contains, how results are ordered, whether there is pagination, or how filters combine. The absence of any return-format or behavioral detail makes it incomplete for an agent to anticipate the tool's output, especially given the complexity.

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?

Schema description coverage is 100%, so the schema already documents each parameter's purpose. The description adds no extra meaning beyond restating that filters are modeled explicitly, which is redundant. Baseline 3 is appropriate because the schema carries the semantic weight; the description adds no value beyond that.

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?

The description clearly states a specific verb ('searches'), a resource ('person records'), and the mechanism ('matching the given criteria'). It also notes the wrapper around NBAPI SearchPersonData, which adds context, and explicitly contrasts with a simple 'omit all filters to return every record' behavior. This distinguishes it from sibling tools like get_person that fetch a single record.

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?

The description gives a concrete usage condition: 'omit all filters to return every record,' implying that providing filters narrows results. It also notes that every filter field is modeled, making it the comprehensive search entry point. While it doesn't explicitly name alternative tools or state when not to use it, the sibling list (e.g., get_person) suggests the distinction, and the guidance is clear enough for an agent to infer when a search is appropriate.

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