Skip to main content
Glama
esreddy2

umich-dining-mcp

by esreddy2

Find halls that are open now

find_open_now
Read-onlyIdempotent

Check which University of Michigan dining halls are open now or at a specified campus-local time and date, returning open halls with service periods and closed hall IDs.

Instructions

The dining halls that are serving at the given time of day, and the ids of the ones that are not, with the service periods of the day for the halls that are open. Without arguments the current campus-local time is used, and the response says which time it resolved. open carries the hall details and today's periods; closed carries hall ids only. stale means a page was served from an expired cache entry; asOf is the age of the data.

Input Schema

NameRequiredDescriptionDefault
atNoThe campus-local time of day to look at. Defaults to the current time.
dateNoThe day to look at. Defaults to today.

Output Schema

NameRequiredDescriptionDefault
atYes
asOfNo
dateYes
openYes
closedYes
failuresYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed22 schema fields changedv0.1.1
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / at
      Added value: +{
      +  "description": "The campus-local time of day to look at. Defaults to the current time.",
      +  "pattern": "^\\d{1,2}:\\d{2}(\\s*(am|pm))?$",
      +  "type": "string"
      +}
    • addedInput schema / properties / date
      Added value: +{
      +  "description": "The day to look at. Defaults to today.",
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +  "type": "string"
      +}
    • addedOutput schema / properties / asOf
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / at
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / closed / items / additionalProperties
      Removed value: -false
    • addedOutput schema / properties / closed / items / enum
      Added value: +[
      +  "bursley",
      +  "east-quad",
      +  "markley",
      +  "mosher-jordan",
      +  "north-quad",
      +  "south-quad",
      +  "twigs-at-oxford",
      +  "wolverine-village",
      +  "lawyers-club",
      +  "martha-cook"
      +]
    • removedOutput schema / properties / closed / items / properties
      Removed value: -{
      -  "address": {
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "date": {
      -    "type": "string"
      -  },
      -  "email": {
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "glutenFreePantry": {
      -    "type": "boolean"
      -  },
      -  "id": {
      -    "enum": [
      -      "bursley",
      -      "east-quad",
      -      "markley",
      -      "mosher-jordan",
      -      "north-quad",
      -      "south-quad",
      -      "twigs-at-oxford",
      -      "wolverine-village",
      -      "lawyers-club",
      -      "martha-cook"
      -    ],
      -    "type": "string"
      -  },
      -  "mapUrl": {
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "meals": {
      -    "items": {
      -      "enum": [
      -        "Breakfast",
      -        "Lunch",
      -        "Dinner"
      -      ],
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "name": {
      -    "type": "string"
      -  },
      -  "openNow": {
      -    "type": "boolean"
      -  },
      -  "path": {
      -    "type": "string"
      -  },
      -  "phone": {
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "residentsOnly": {
      -    "type": "boolean"
      -  },
      -  "stale": {
      -    "type": "boolean"
      -  },
      -  "today": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "closed": {
      -          "type": "boolean"
      -        },
      -        "label": {
      -          "type": "string"
      -        },
      -        "times": {
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "label",
      -        "times",
      -        "closed"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "url": {
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / closed / items / required
      Removed value: -[
      -  "id",
      -  "name",
      -  "path",
      -  "url",
      -  "residentsOnly",
      -  "glutenFreePantry",
      -  "address",
      -  "phone",
      -  "email",
      -  "mapUrl",
      -  "meals",
      -  "date",
      -  "today",
      -  "openNow",
      -  "stale"
      -]
    • changedOutput schema / properties / closed / items / type
      Previous value: -"object"New value: +"string"
    • removedOutput schema / properties / open / items / properties / address
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • addedOutput schema / properties / open / items / properties / asOf
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / open / items / properties / date
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / open / items / properties / email
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / open / items / properties / mapUrl
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / open / items / properties / meals
      Removed value: -{
      -  "items": {
      -    "enum": [
      -      "Breakfast",
      -      "Lunch",
      -      "Dinner"
      -    ],
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / open / items / properties / path
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / open / items / properties / phone
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • changedOutput schema / properties / open / items / properties / today / items / required
      Previous value: -[
      -  "label",
      -  "times",
      -  "closed"
      -]New value: +[
      +  "label",
      +  "times"
      +]
    • removedOutput schema / properties / open / items / properties / url
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / properties / open / items / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "path",
      -  "url",
      -  "residentsOnly",
      -  "glutenFreePantry",
      -  "address",
      -  "phone",
      -  "email",
      -  "mapUrl",
      -  "meals",
      -  "date",
      -  "today",
      -  "openNow",
      -  "stale"
      -]New value: +[
      +  "id",
      +  "name",
      +  "residentsOnly",
      +  "glutenFreePantry",
      +  "today",
      +  "openNow",
      +  "stale"
      +]
    • changedOutput schema / required
      Previous value: -[
      -  "date",
      -  "open",
      -  "closed",
      -  "failures"
      -]New value: +[
      +  "date",
      +  "at",
      +  "open",
      +  "closed",
      +  "failures"
      +]
  2. First observedv0.1.0

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare this as a read-only, idempotent, non-destructive open-world operation, and the description adds useful behavior beyond that: default time resolution, open vs. closed response contents, stale-cache meaning, and asOf age. It does not contradict the annotations and gives strong context for interpreting the response.

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 description is front-loaded with the core purpose and then supplies response-field context. It is dense but avoids obvious repetition, and every clause appears to serve interpretation or default behavior.

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 moderate complexity, annotations, complete input schema, and output schema, the description is complete enough to call correctly. It covers default time handling, response partitioning into open and closed, and cache-related fields.

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 both `at` and `date`. The description adds the important default behavior when no arguments are supplied, but otherwise does not substantially extend parameter semantics beyond what the schema provides.

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

Purpose4/5

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

The description clearly states the resource and scope: dining halls serving at a given time, plus ids of closed halls. It is specific enough for an agent to understand the operation, though it does not explicitly contrast itself with siblings such as get_hours.

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

Usage Guidelines3/5

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

Usage is implied by the phrase 'dining halls that are serving at the given time of day,' and the default to current campus-local time is helpful. However, there is no explicit when-to-use guidance, no exclusions, and no named alternative such as get_hours.

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