Skip to main content
Glama

An attorney's court calendar (hearings) by North Carolina (NC) State Bar number

get_attorney_hearing_calendar
Read-only

"What am I in court for today?" — an attorney's HEARING CALENDAR, by bar number OR by name.

REQUIRES bar, OR BOTH last AND first. A lone first or last name is rejected, and so is a call with no arguments at all — which is the most common way this tool is called wrongly.

Returns every scheduled hearing in the date range: date and time, case number, caption, hearing type, judge and courtroom. Defaults to TODAY in North Carolina (NC) when no dates are given, so get_attorney_hearing_calendar(bar="21262") is exactly "what's on my calendar today".

THIS IS THE TOOL FOR "TODAY", "TOMORROW", "THIS WEEK" AND "MY CALENDAR". search_cases_by_attorney is a different question: it lists the cases an attorney is of record on and its file_date_* filters bound WHEN A CASE WAS FILED. A case filed in 2023 has hearings today, so filtering that tool's file date to today returns cases OPENED today — almost always nothing. Never substitute it for this.

PREFER THE BAR NUMBER whenever the user can supply it: it resolves to exactly one attorney, and a name may not — see attributable below for what that costs.

READ attributable BEFORE ATTRIBUTING THE CALENDAR TO ANYONE. True means these hearings belong to exactly one attorney; false means they do not and must not be described as one person's day. On a BAR search it is always true and attorney_name is null — the hearing search returns no name, so that null means "not reported", not "ambiguous".

A NAME SEARCH MAY NOT BE ATTRIBUTABLE. The hearing grid has no attorney column, so if a name matches several attorneys their hearings come back MERGED with no way to tell whose is whose. To catch this the tool cross-checks the name against the case index and reports matched_attorneys:

  • exactly one match -> attorney_name is set; treat the calendar as that person's

  • more than one -> the calendar spans them all and CANNOT be split. Say so and ask for a State Bar number. Do not present it as one lawyer's day.

  • none -> no cases exist under that name, so an empty calendar may mean the name is wrong rather than the day being clear.

The cross-check is evidence, not proof — a single match still warrants preferring the bar number when the answer decides whether someone travels to a courthouse.

SLOW ON A CACHE MISS — 30-120 seconds, because it drives a real browser through two CAPTCHAs. Tell the user you're pulling their calendar and let it run. This is the opposite of search_cases_by_attorney, which is fast and needs no warning. Repeat calls for the same search and range are served from a 6-hour cache and return instantly; cached: true with fetched_at tells you which you got. If the answer is being used to decide whether to appear somewhere, quote fetched_at.

AN EMPTY CALENDAR IS A REAL ANSWER, BUT ONLY WHEN THE LOOKUP SUCCEEDED. If the call returns an error, the calendar could NOT be checked — say that, and never turn it into "you have nothing scheduled". Those differ by someone missing court.

Covers all 100 counties at once; there is no county filter on this search. Public record. Read-only. NC only. Informational, not legal advice.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
barNo
endNo
lastNo
firstNo
startNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint and openWorldHint annotations, the description discloses critical runtime behavior: slow cache-miss latency of 30–120 seconds due to CAPTCHAs, a 6-hour cache with `cached` and `fetched_at`, merged results on ambiguous name searches, and the difference between a successful empty result and an error. The annotations are not contradicted; they are substantially enriched.

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 long, but every section earns its place: required argument combos, sibling differentiation, attribution caveats, latency warnings, cache semantics, and error handling are all high-stakes for correct invocation. The core question and most critical constraint are front-loaded, and the formatting makes the guidance scannable.

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?

Given the tool's complexity, the description is essentially complete: it covers argument requirements, defaults, output contents, attribution risks, performance expectations, caching, error handling, geographic scope, and public-record status. The output schema exists for return structure, so the description need not repeat it; nothing an agent needs to call this tool correctly is missing.

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

Parameters4/5

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

With 0% schema description coverage, the description carries the full parameter burden and does most of it well: `bar` OR both `first` and `last` is required, lone names and no-argument calls are rejected, and absent dates default to today. The main remaining gap is that the date format for `start`/`end` is never specified, which an agent would need to construct valid date strings.

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 the exact question the tool answers — an attorney's hearing calendar — and states the resource and accepted identifiers clearly. It also explicitly names its sibling `search_cases_by_attorney` and distinguishes the two, so an agent can tell them apart without inspecting their schemas.

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?

It provides explicit routing: "THIS IS THE TOOL FOR 'TODAY', 'TOMORROW', 'THIS WEEK' AND 'MY CALENDAR'" and warns against substituting `search_cases_by_attorney`, explaining why that tool's file-date filters answer a different question. It also gives concrete decision guidance — prefer the bar number, read `attributable`, and never present an `error` result as an empty calendar.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources