Skip to main content
Glama
ServiceNow_Developer_Panel

ServiceNow_Developer_Panel

describe_table

Read-onlyIdempotent

Retrieve ServiceNow table field definitions, including inherited fields, types, references, overrides, and mandatory/read-only flags, so you can query unknown or custom tables correctly.

Instructions

List the fields of a table from the instance dictionary, including the fields it inherits from the tables it extends, for example task for incident. Each field has its name, label and type, the table that defines it, the table it points to for reference and list fields, and whether it is mandatory or read only. The dictionary overrides of the table and of its parents are applied and listed under overrides. default_value, dependent and choices appear only when the field has them; choices are the active values and labels to use in queries, with the dependent_value of the dependent field when they depend on one. Use it before querying a table whose fields you do not know for sure, custom application tables included. Inactive fields are left out. The returned cache_name holds the tables sys_db_object, sys_dictionary, sys_dictionary_override and sys_choice, where name is the table and element the field.

Input Schema

NameRequiredDescriptionDefault
tableYesServiceNow table name, for example incident or sys_user.
fieldsNoOnly describe these fields, for example ["state", "caller_id"]. Empty describes every field of the table.
refreshNoSkip the local cache and ask the instance again. Leave false to reuse a recent response.
instanceYesName of a configured instance, as returned by list_instances.

Output Schema

NameRequiredDescriptionDefault
labelYes
tableYes
fieldsYes
sourceYes
extendsYes
warningsYes
cache_nameYes
executed_atYes
field_countYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. 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 establish readOnly/idempotent/openWorld, so the description's real contribution is behavioral: inactive fields are omitted, dictionary overrides from parents are applied and listed, and default_value/dependent/choices appear only conditionally. It also discloses that the response carries a cache_name pointing at sys_db_object, sys_dictionary, sys_dictionary_override and sys_choice, which is useful context beyond the annotations, though permissions and failure modes are not addressed.

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 purpose is front-loaded in the first clause, and every sentence carries substantive content about return shape or usage. It is dense and somewhat run-on in the middle ('the table that defines it, the table it points to for reference and list fields'), which slightly hurts scanability but not clarity.

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

Completeness4/5

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

For a moderately complex describe tool with an output schema, the description covers what is returned, what is conditionally returned, what is filtered out, and how caching interacts with the result. Remaining gaps, such as the effect of the 'fields' filter on the returned structure, are adequately covered by the schema.

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 all four parameters are already documented in the schema. The description adds no additional meaning for the 'fields', 'refresh', or 'instance' arguments, so it sits at the baseline for a fully described schema.

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 opens with a specific verb and resource ('List the fields of a table from the instance dictionary') and immediately scopes it by naming inheritance and the concrete example 'task for incident'. That is enough to distinguish it from data-fetching siblings like request_table or request_tables without opening any 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?

It gives a clear trigger: 'Use it before querying a table whose fields you do not know for sure, custom application tables included.' It does not name an alternative tool or state when not to use it, so it stops short of full routing guidance.

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