Skip to main content
Glama
useshortcut

Shortcut MCP Server

Official
by useshortcut

Stories: Search

stories-search
Read-onlyIdempotent

Search Shortcut stories by name, type, owner, status, date, and custom fields. Filter by labels, epics, projects, or presence of comments and PRs.

Instructions

Find Shortcut stories.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoStory ID
prNoPR number
dueNoDate filter: "YYYY-MM-DD", "today", "yesterday", "tomorrow", or range "YYYY-MM-DD..YYYY-MM-DD" (use * for open bounds)
epicNoEpic ID
nameNoName contains
teamNoTeam name or mention
typeNoStory type
hasPrNoFilter by presence of PR
labelNoLabel name
ownerNoFilter by owner (use mention name or "me")
stateNoWorkflow state name
branchNoBranch name
commitNoCommit SHA
isDoneNoFilter by completed status
commentNoComment contains
createdNoDate filter: "YYYY-MM-DD", "today", "yesterday", "tomorrow", or range "YYYY-MM-DD..YYYY-MM-DD" (use * for open bounds)
hasEpicNoFilter by presence of epic
hasTaskNoFilter by presence of task
projectNoProject ID
updatedNoDate filter: "YYYY-MM-DD", "today", "yesterday", "tomorrow", or range "YYYY-MM-DD..YYYY-MM-DD" (use * for open bounds)
estimateNoPoint estimate
hasLabelNoFilter by presence of label
hasOwnerNoFilter by presence of owner
priorityNoPriority level
severityNoSeverity level
skillSetNoSkill set
completedNoDate filter: "YYYY-MM-DD", "today", "yesterday", "tomorrow", or range "YYYY-MM-DD..YYYY-MM-DD" (use * for open bounds)
hasBranchNoFilter by presence of branch
hasCommitNoFilter by presence of commit
isBlockedNoFilter by blocked status
isBlockerNoFilter by blocking status
isOverdueNoFilter by overdue status
isStartedNoFilter by started status
objectiveNoObjective ID
requesterNoFilter by requester (use mention name or "me")
hasCommentNoFilter by presence of comment
isArchivedNoFilter by archived status
descriptionNoDescription contains
hasDeadlineNoFilter by presence of deadline
isUnstartedNoFilter by unstarted status
productAreaNoProduct area
hasAttachmentNoFilter by presence of attachment
isUnestimatedNoFilter by unestimated status
nextPageTokenNoPagination token from previous search
technicalAreaNoTechnical area

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed45 schema fields changedv0.15.1
    • changedInput schema / properties / branch / description
      Previous value: -"Find only stories matching the specified branch"New value: +"Branch name"
    • changedInput schema / properties / comment / description
      Previous value: -"Find only stories matching the specified comment"New value: +"Comment contains"
    • changedInput schema / properties / commit / description
      Previous value: -"Find only stories matching the specified commit"New value: +"Commit SHA"
    • changedInput schema / properties / completed / description
      Previous value: -"The date in \"YYYY-MM-DD\" format, or one of the keywords: \"yesterday\", \"today\", \"tomorrow\", or a date range in the format \"YYYY-MM-DD..YYYY-MM-DD\". The date range can also be open ended by using \"*\" for one of the bounds. Examples: \"2023-01-01\", \"today\", \"2023-01-01..*\" (from Jan 1, 2023 to any future date), \"*.2023-01-31\" (any date up to Jan 31, 2023), \"today..*\" (from today onwards), \"*.yesterday\" (any date up to yesterday). The keywords cannot be used to calculate relative dates (e.g. the following are not valid: \"today-1\" or \"tomorrow+1\")."New value: +"Date filter: \"YYYY-MM-DD\", \"today\", \"yesterday\", \"tomorrow\", or range \"YYYY-MM-DD..YYYY-MM-DD\" (use * for open bounds)"
    • changedInput schema / properties / created / description
      Previous value: -"The date in \"YYYY-MM-DD\" format, or one of the keywords: \"yesterday\", \"today\", \"tomorrow\", or a date range in the format \"YYYY-MM-DD..YYYY-MM-DD\". The date range can also be open ended by using \"*\" for one of the bounds. Examples: \"2023-01-01\", \"today\", \"2023-01-01..*\" (from Jan 1, 2023 to any future date), \"*.2023-01-31\" (any date up to Jan 31, 2023), \"today..*\" (from today onwards), \"*.yesterday\" (any date up to yesterday). The keywords cannot be used to calculate relative dates (e.g. the following are not valid: \"today-1\" or \"tomorrow+1\")."New value: +"Date filter: \"YYYY-MM-DD\", \"today\", \"yesterday\", \"tomorrow\", or range \"YYYY-MM-DD..YYYY-MM-DD\" (use * for open bounds)"
    • changedInput schema / properties / description / description
      Previous value: -"Find only stories matching the specified description"New value: +"Description contains"
    • changedInput schema / properties / due / description
      Previous value: -"The date in \"YYYY-MM-DD\" format, or one of the keywords: \"yesterday\", \"today\", \"tomorrow\", or a date range in the format \"YYYY-MM-DD..YYYY-MM-DD\". The date range can also be open ended by using \"*\" for one of the bounds. Examples: \"2023-01-01\", \"today\", \"2023-01-01..*\" (from Jan 1, 2023 to any future date), \"*.2023-01-31\" (any date up to Jan 31, 2023), \"today..*\" (from today onwards), \"*.yesterday\" (any date up to yesterday). The keywords cannot be used to calculate relative dates (e.g. the following are not valid: \"today-1\" or \"tomorrow+1\")."New value: +"Date filter: \"YYYY-MM-DD\", \"today\", \"yesterday\", \"tomorrow\", or range \"YYYY-MM-DD..YYYY-MM-DD\" (use * for open bounds)"
    • changedInput schema / properties / epic / description
      Previous value: -"Find only stories matching the specified epic"New value: +"Epic ID"
    • changedInput schema / properties / estimate / description
      Previous value: -"Find only stories matching the specified estimate"New value: +"Point estimate"
    • changedInput schema / properties / hasAttachment / description
      Previous value: -"Find only entities that have an attachment when true, or only entities that do not have an attachment when false. Example: hasOwner: true will find stories with an owner, hasOwner: false will find stories without an owner."New value: +"Filter by presence of attachment"
    • changedInput schema / properties / hasBranch / description
      Previous value: -"Find only entities that have a branch when true, or only entities that do not have a branch when false. Example: hasOwner: true will find stories with an owner, hasOwner: false will find stories without an owner."New value: +"Filter by presence of branch"
    • changedInput schema / properties / hasComment / description
      Previous value: -"Find only entities that have a comment when true, or only entities that do not have a comment when false. Example: hasOwner: true will find stories with an owner, hasOwner: false will find stories without an owner."New value: +"Filter by presence of comment"
    • changedInput schema / properties / hasCommit / description
      Previous value: -"Find only entities that have a commit when true, or only entities that do not have a commit when false. Example: hasOwner: true will find stories with an owner, hasOwner: false will find stories without an owner."New value: +"Filter by presence of commit"
    • changedInput schema / properties / hasDeadline / description
      Previous value: -"Find only entities that have a deadline when true, or only entities that do not have a deadline when false. Example: hasOwner: true will find stories with an owner, hasOwner: false will find stories without an owner."New value: +"Filter by presence of deadline"
    • changedInput schema / properties / hasEpic / description
      Previous value: -"Find only entities that have an epic when true, or only entities that do not have an epic when false. Example: hasOwner: true will find stories with an owner, hasOwner: false will find stories without an owner."New value: +"Filter by presence of epic"
    • changedInput schema / properties / hasLabel / description
      Previous value: -"Find only entities that have a label when true, or only entities that do not have a label when false. Example: hasOwner: true will find stories with an owner, hasOwner: false will find stories without an owner."New value: +"Filter by presence of label"
    • changedInput schema / properties / hasOwner / description
      Previous value: -"Find only entities that have an owner when true, or only entities that do not have an owner when false. Example: hasOwner: true will find stories with an owner, hasOwner: false will find stories without an owner."New value: +"Filter by presence of owner"
    • changedInput schema / properties / hasPr / description
      Previous value: -"Find only entities that have a pr when true, or only entities that do not have a pr when false. Example: hasOwner: true will find stories with an owner, hasOwner: false will find stories without an owner."New value: +"Filter by presence of PR"
    • changedInput schema / properties / hasTask / description
      Previous value: -"Find only entities that have a task when true, or only entities that do not have a task when false. Example: hasOwner: true will find stories with an owner, hasOwner: false will find stories without an owner."New value: +"Filter by presence of task"
    • changedInput schema / properties / id / description
      Previous value: -"Find only stories with the specified public ID"New value: +"Story ID"
    • changedInput schema / properties / isArchived / description
      Previous value: -"Find only entities that are archived when true, or only entities that are not archived when false."New value: +"Filter by archived status"
    • changedInput schema / properties / isBlocked / description
      Previous value: -"Find only entities that are blocked when true, or only entities that are not blocked when false."New value: +"Filter by blocked status"
    • changedInput schema / properties / isBlocker / description
      Previous value: -"Find only entities that are blocking when true, or only entities that are not blocking when false."New value: +"Filter by blocking status"
    • changedInput schema / properties / isDone / description
      Previous value: -"Find only entities that are completed when true, or only entities that are not completed when false."New value: +"Filter by completed status"
    • changedInput schema / properties / isOverdue / description
      Previous value: -"Find only entities that are overdue when true, or only entities that are not overdue when false."New value: +"Filter by overdue status"
    • changedInput schema / properties / isStarted / description
      Previous value: -"Find only entities that are started when true, or only entities that are not started when false."New value: +"Filter by started status"
    • changedInput schema / properties / isUnestimated / description
      Previous value: -"Find only entities that are unestimated when true, or only entities that are not unestimated when false."New value: +"Filter by unestimated status"
    • changedInput schema / properties / isUnstarted / description
      Previous value: -"Find only entities that are unstarted when true, or only entities that are not unstarted when false."New value: +"Filter by unstarted status"
    • changedInput schema / properties / label / description
      Previous value: -"Find only stories matching the specified label"New value: +"Label name"
    • changedInput schema / properties / name / description
      Previous value: -"Find only stories matching the specified name"New value: +"Name contains"
    • changedInput schema / properties / nextPageToken / description
      Previous value: -"If a next_page_token was returned from the search result, pass it in to get the next page of results. Should be combined with the original search parameters."New value: +"Pagination token from previous search"
    • changedInput schema / properties / objective / description
      Previous value: -"Find only stories matching the specified objective"New value: +"Objective ID"
    • changedInput schema / properties / owner / description
      Previous value: -"Find entities where the owner match the specified user. This must either be the user's mention name or the keyword \"me\" for the current user."New value: +"Filter by owner (use mention name or \"me\")"
    • changedInput schema / properties / pr / description
      Previous value: -"Find only stories matching the specified pull request"New value: +"PR number"
    • changedInput schema / properties / priority / description
      Previous value: -"Find only stories matching the specified priority"New value: +"Priority level"
    • changedInput schema / properties / productArea / description
      Previous value: -"Find only stories matching the specified product area"New value: +"Product area"
    • changedInput schema / properties / project / description
      Previous value: -"Find only stories matching the specified project"New value: +"Project ID"
    • changedInput schema / properties / requester / description
      Previous value: -"Find entities where the requester match the specified user. This must either be the user's mention name or the keyword \"me\" for the current user."New value: +"Filter by requester (use mention name or \"me\")"
    • changedInput schema / properties / severity / description
      Previous value: -"Find only stories matching the specified severity"New value: +"Severity level"
    • changedInput schema / properties / skillSet / description
      Previous value: -"Find only stories matching the specified skill set"New value: +"Skill set"
    • changedInput schema / properties / state / description
      Previous value: -"Find only stories matching the specified state"New value: +"Workflow state name"
    • changedInput schema / properties / team / description
      Previous value: -"Find only stories matching the specified team. This can be a team mention name or team name."New value: +"Team name or mention"
    • changedInput schema / properties / technicalArea / description
      Previous value: -"Find only stories matching the specified technical area"New value: +"Technical area"
    • changedInput schema / properties / type / description
      Previous value: -"Find only stories of the specified type"New value: +"Story type"
    • changedInput schema / properties / updated / description
      Previous value: -"The date in \"YYYY-MM-DD\" format, or one of the keywords: \"yesterday\", \"today\", \"tomorrow\", or a date range in the format \"YYYY-MM-DD..YYYY-MM-DD\". The date range can also be open ended by using \"*\" for one of the bounds. Examples: \"2023-01-01\", \"today\", \"2023-01-01..*\" (from Jan 1, 2023 to any future date), \"*.2023-01-31\" (any date up to Jan 31, 2023), \"today..*\" (from today onwards), \"*.yesterday\" (any date up to yesterday). The keywords cannot be used to calculate relative dates (e.g. the following are not valid: \"today-1\" or \"tomorrow+1\")."New value: +"Date filter: \"YYYY-MM-DD\", \"today\", \"yesterday\", \"tomorrow\", or range \"YYYY-MM-DD..YYYY-MM-DD\" (use * for open bounds)"
  2. Addedv1.0.0

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds no behavioral context beyond 'search'—for example, it does not mention pagination (nextPageToken), result limits, or that it returns a list. The description fails to add value over annotations.

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

Conciseness2/5

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

The description is extremely short (3 words) but misses critical information. Conciseness should balance brevity with completeness; here, it is under-specified. Every sentence should earn its place, but this lacks substance.

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?

With 45 parameters, no output schema, and no usage guidance, the description is incomplete. It does not explain the search/filter nature, pagination, or what the returned data looks like. The rich schema parameter descriptions partly compensate, but the tool description itself is deficient.

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 baseline is 3. The tool description does not add any parameter information beyond the schema's detailed descriptions. Thus, it does not compensate or exceed the baseline.

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 'Find Shortcut stories' clearly states the action (find/search) and resource (stories). However, it does not differentiate from other story retrieval tools like stories-get-by-id or stories-get-by-external-link. The name 'search' implies filtering, which helps distinguish it.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description does not mention when not to use it, nor does it reference sibling tools like stories-get-by-id for specific story lookup. The agent must infer usage from the parameter set.

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/useshortcut/mcp-server-shortcut'

If you have feedback or need assistance with the MCP directory API, please join our Discord server