arcade-mcp/toolkits/jira/arcade_jira/tools/labels.py
Renato Byrro a538f4bf81
Jira Toolkit (#407)
Unusually big PR, in large part due to Jira's data model complexities.
2025-06-11 12:06:33 -03:00

34 lines
1.1 KiB
Python

from typing import Annotated, Any
from arcade.sdk import ToolContext, tool
from arcade.sdk.auth import Atlassian
from arcade_jira.client import JiraClient
from arcade_jira.utils import add_pagination_to_response
@tool(requires_auth=Atlassian(scopes=["read:jira-work"]))
async def list_labels(
context: ToolContext,
limit: Annotated[
int, "The maximum number of labels to return. Min of 1, Max of 200. Defaults to 200."
] = 200,
offset: Annotated[
int, "The number of labels to skip. Defaults to 0 (starts from the first label)"
] = 0,
) -> Annotated[dict[str, Any], "The existing labels (tags) in the user's Jira instance"]:
"""Get the existing labels (tags) in the user's Jira instance."""
limit = max(min(limit, 200), 1)
client = JiraClient(context.get_auth_token_or_empty())
api_response = await client.get(
"/label",
params={
"maxResults": limit,
"startAt": offset,
},
)
response = {
"labels": api_response["values"],
"total": api_response["total"],
}
return add_pagination_to_response(response, api_response["values"], limit, offset)