Tool

search_pins

Search pinsRead-only

Description

Find pins in a workspace: the one with pins in repo, or the one you name. Pass query to search in natural language ("flaky auth tests", "slow invoice export"); omit it to list by filters. Default: open pins by priority (payoff for the size of the job, risk, what each unblocks, sightings, harder_later and an agreed approach, with blocked pins lower; ready leaves them out).

Parameters

repostring

Repository as owner/name, from the git remote. Picks the workspace: the one with pins in this repo. Also only lists that repo's pins.

workspacestring

Workspace slug. Searches that whole workspace; with repo, only when the repo is in several of them. - acme: Acme (acme/api) - acme-mobile: Acme Mobile (acme/ios)

Your workspaces, e.g.acmeacme-mobile

querystring

Natural language, a code symbol or file name (matched against pins' files too), or a pin key or number. A pin key also picks its workspace, so it needs no repo.

up to 500 characters

areasstring[]

Only pins in these areas: acme (acme/api): - auth: Sign-in, sessions and permissions - payments: Billing, invoices and checkout acme-mobile (acme/ios): - offline: Sync and offline storage

Your workspace's areas, e.g.authofflinepayments

kindstring[]

One ofbugdebtperformancesecuritytestingdxdocsfeature

statusstring[]

Default ["open"].

One ofopenclaimedresolveddismissed

min_riskstring

One oflowmediumhighcritical

min_payoffstring

One oflowmediumhighcritical

max_scopestring

e.g. "small" for something quick.

One oftrivialsmallmediumlargeepic

min_leveragestring

Payoff for the effort. "high" = a quick win (e.g. high payoff on a small job).

One oflowmediumhighcritical

readyboolean

Only pins no open or claimed pin blocks: ones that can start now. Blocked pins otherwise still show, ranked lower.

created_afterstring

Pinned at or after this ISO date-time, with offset. For "yesterday", pass yesterday's midnight and today's midnight in the user's time zone, e.g. 2026-10-02T00:00:00-07:00 and 2026-10-03T00:00:00-07:00.

format: date-time

created_beforestring

Pinned before this ISO date-time, with offset.

format: date-time

status_changed_afterstring

Entered its current status at or after this ISO date-time, with offset. With status ["resolved"], what got fixed since then.

format: date-time

status_changed_beforestring

Entered its current status before this ISO date-time, with offset.

format: date-time

sortstring

Default "relevance" with a query, otherwise "priority". "leverage" is payoff for the effort alone. "scope" lists the smallest jobs first.

One ofpriorityleverageriskpayoffscopesightingsrecentrelevance

orderstring

Flips the sort. Default is best first: highest priority, leverage, risk, payoff and sightings, newest, smallest scope.

One ofascdesc

limitinteger

Default 10, max 50.

1 to 50

Response

An example. The result sits in the same envelope as every tool's; see Responses.

JSON
{
  "workspace": {
    "slug": "acme",
    "name": "Acme"
  },
  "result": {
    "results": [
      {
        "pin": {
          "key": "ACME-42",
          "url": "https://laterbase.dev/dashboard/pins/ACME-42",
          "title": "Session refresh races when two tabs refresh at once",
          "status": "open",
          "summary": "Two tabs refreshing an expired session at the same moment both rotate the refresh token; the loser is signed out.",
          "repo": "acme/api",
          "kind": "bug",
          "areas": [
            "auth"
          ],
          "risk": "high",
          "payoff": "high",
          "scope": "small",
          "leverage": "high",
          "priority": "critical",
          "claimed_by": null,
          "sightings": 2,
          "created_at": "2026-10-01T14:03:11.000Z",
          "status_changed_at": "2026-10-01T14:03:11.000Z"
        },
        "score": 0.82,
        "reason": "matches your query"
      },
      {
        "pin": {
          "key": "ACME-17",
          "url": "https://laterbase.dev/dashboard/pins/ACME-17",
          "title": "Invoice export times out for large accounts",
          "status": "open",
          "summary": "The CSV export builds every row in memory; accounts with 50k+ invoices hit the request timeout.",
          "repo": "acme/api",
          "kind": "performance",
          "areas": [
            "payments"
          ],
          "risk": "medium",
          "payoff": "high",
          "scope": "medium",
          "leverage": "medium",
          "priority": "high",
          "claimed_by": null,
          "sightings": 0,
          "created_at": "2026-10-01T14:03:11.000Z",
          "status_changed_at": "2026-10-01T14:03:11.000Z"
        },
        "score": 0.41,
        "reason": "matches your query"
      }
    ],
    "total": 2
  }
}

Input schema

Exactly what tools/list sends your agent.

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "repo": {
      "description": "Repository as `owner/name`, from the git remote. Picks the workspace: the one with pins in this repo. Also only lists that repo's pins.",
      "type": "string"
    },
    "workspace": {
      "description": "Workspace slug. Searches that whole workspace; with repo, only when the repo is in several of them.\n- acme: Acme (acme/api)\n- acme-mobile: Acme Mobile (acme/ios)",
      "type": "string",
      "enum": [
        "acme",
        "acme-mobile"
      ]
    },
    "query": {
      "description": "Natural language, a code symbol or file name (matched against pins' files too), or a pin key or number. A pin key also picks its workspace, so it needs no repo.",
      "type": "string",
      "maxLength": 500
    },
    "areas": {
      "description": "Only pins in these areas:\nacme (acme/api):\n- auth: Sign-in, sessions and permissions\n- payments: Billing, invoices and checkout\nacme-mobile (acme/ios):\n- offline: Sync and offline storage",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "auth",
          "offline",
          "payments"
        ]
      }
    },
    "kind": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "bug",
          "debt",
          "performance",
          "security",
          "testing",
          "dx",
          "docs",
          "feature"
        ]
      }
    },
    "status": {
      "description": "Default [\"open\"].",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "open",
          "claimed",
          "resolved",
          "dismissed"
        ]
      }
    },
    "min_risk": {
      "type": "string",
      "enum": [
        "low",
        "medium",
        "high",
        "critical"
      ]
    },
    "min_payoff": {
      "type": "string",
      "enum": [
        "low",
        "medium",
        "high",
        "critical"
      ]
    },
    "max_scope": {
      "description": "e.g. \"small\" for something quick.",
      "type": "string",
      "enum": [
        "trivial",
        "small",
        "medium",
        "large",
        "epic"
      ]
    },
    "min_leverage": {
      "description": "Payoff for the effort. \"high\" = a quick win (e.g. high payoff on a small job).",
      "type": "string",
      "enum": [
        "low",
        "medium",
        "high",
        "critical"
      ]
    },
    "ready": {
      "description": "Only pins no open or claimed pin blocks: ones that can start now. Blocked pins otherwise still show, ranked lower.",
      "type": "boolean"
    },
    "created_after": {
      "description": "Pinned at or after this ISO date-time, with offset. For \"yesterday\", pass yesterday's midnight and today's midnight in the user's time zone, e.g. 2026-10-02T00:00:00-07:00 and 2026-10-03T00:00:00-07:00.",
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "created_before": {
      "description": "Pinned before this ISO date-time, with offset.",
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "status_changed_after": {
      "description": "Entered its current status at or after this ISO date-time, with offset. With status [\"resolved\"], what got fixed since then.",
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "status_changed_before": {
      "description": "Entered its current status before this ISO date-time, with offset.",
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "sort": {
      "description": "Default \"relevance\" with a query, otherwise \"priority\". \"leverage\" is payoff for the effort alone. \"scope\" lists the smallest jobs first.",
      "type": "string",
      "enum": [
        "priority",
        "leverage",
        "risk",
        "payoff",
        "scope",
        "sightings",
        "recent",
        "relevance"
      ]
    },
    "order": {
      "description": "Flips the sort. Default is best first: highest priority, leverage, risk, payoff and sightings, newest, smallest scope.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "limit": {
      "description": "Default 10, max 50.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  }
}