{ "annotations": { "idempotentHint": false, "readOnlyHint": true, "title": "Get file blame information" }, "description": "Get git blame information for a file, showing the commit that last modified each line. Ranges share commit metadata via the top-level 'commits' map keyed by SHA. Use 'start_line'/'end_line' to restrict the result to a window of the file, and 'perPage'/'after' to cursor-page through returned ranges. Matching ranges are capped at 1000; when the cap is hit 'truncated' is set to true and 'total_ranges' reports the pre-cap match count.", "inputSchema": { "properties": { "after": { "description": "Cursor for pagination. Use the cursor from the previous response.", "type": "string" }, "end_line": { "description": "Optional 1-based ending line of the window of interest. Must be \u003e= start_line when both are provided.", "minimum": 1, "type": "number" }, "owner": { "description": "Repository owner (username or organization)", "type": "string" }, "path": { "description": "Path to the file in the repository, relative to the repository root", "type": "string" }, "perPage": { "description": "Results per page for pagination (min 1, max 100)", "maximum": 100, "minimum": 1, "type": "number" }, "ref": { "description": "Git reference (branch, tag, or commit SHA). Defaults to the repository's default branch (HEAD).", "type": "string" }, "repo": { "description": "Repository name", "type": "string" }, "start_line": { "description": "Optional 1-based starting line of the window of interest. Only ranges overlapping [start_line, end_line] are returned, clamped to the window.", "minimum": 1, "type": "number" } }, "required": [ "owner", "repo", "path" ], "type": "object" }, "name": "get_file_blame" }