Tool

pins_near

Pins nearRead-only

Description

List pins touching the code a task involves. Call it when you start one: there may be known bugs, gotchas or an in-flight fix. Pass files, directories (ending in /), or both. By default you get pins on those files and anywhere in their folders; raise radius to look further up the tree. Closest pins come first; among equals, pins that point at lines or a symbol in the file before ones that only list it, then claimed ones (work in flight). Each comes with its closest match, with the pin's lines and symbol there when it gave them (more_matches counts the rest). get_pin any that matter to your change. scope in the result lists the folders searched; it's empty when none of your workspaces has pins in the repo.

Parameters

repostringrequired

Repository as owner/name, from the git remote. Picks the workspace: the one with pins in this repo.

workspacestring

Workspace slug. Only when the repo has pins in several of your workspaces, or in none yet; otherwise the repo picks it. - acme: Acme (acme/api) - acme-mobile: Acme Mobile (acme/ios)

Your workspaces, e.g.acmeacme-mobile

pathsstring[]required

Files and/or directories (ending in /). Repo-relative, e.g. src/auth.ts. Never absolute. A line range (src/auth.ts:40-88) is ignored.

1–50 items

radiusinteger

How far up to look. 0 = only the exact files (directories: only files directly inside). 1 (default) = anywhere under each path's folder. 2 = anywhere under the parent folder, and so on. Max 5.

0 to 5

include_resolvedboolean

Include resolved and dismissed pins. Default false.

limitinteger

Default 5, max 50.

1 to 50

all_matchesboolean

List every matching path pair per pin instead of only the closest. Default false.

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"
        },
        "matched": [
          {
            "yours": "src/auth/",
            "theirs": "src/auth/session.ts",
            "distance": 1,
            "lines": "40-58",
            "symbol": "refreshSession"
          }
        ],
        "more_matches": 0
      }
    ],
    "scope": [
      "src/auth/"
    ]
  }
}

Input schema

Exactly what tools/list sends your agent.

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "repo": {
      "type": "string",
      "description": "Repository as `owner/name`, from the git remote. Picks the workspace: the one with pins in this repo."
    },
    "workspace": {
      "description": "Workspace slug. Only when the repo has pins in several of your workspaces, or in none yet; otherwise the repo picks it.\n- acme: Acme (acme/api)\n- acme-mobile: Acme Mobile (acme/ios)",
      "type": "string",
      "enum": [
        "acme",
        "acme-mobile"
      ]
    },
    "paths": {
      "minItems": 1,
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Files and/or directories (ending in /). Repo-relative, e.g. `src/auth.ts`. Never absolute. A line range (`src/auth.ts:40-88`) is ignored."
    },
    "radius": {
      "description": "How far up to look. 0 = only the exact files (directories: only files directly inside). 1 (default) = anywhere under each path's folder. 2 = anywhere under the parent folder, and so on. Max 5.",
      "type": "integer",
      "minimum": 0,
      "maximum": 5
    },
    "include_resolved": {
      "description": "Include resolved and dismissed pins. Default false.",
      "type": "boolean"
    },
    "limit": {
      "description": "Default 5, max 50.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "all_matches": {
      "description": "List every matching path pair per pin instead of only the closest. Default false.",
      "type": "boolean"
    }
  },
  "required": [
    "repo",
    "paths"
  ]
}