Resolves TOO-388 <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Primarily metadata/dependency additions with no changes to core tool execution paths; risk is limited to potential packaging/import issues from the new `arcade-mcp-server` dependency. > > **Overview** > Adds `ToolMetadata` to tool decorators across the Bright Data, ClickHouse, MongoDB, Postgres, LinkedIn, Zendesk, and Math toolkits, specifying *behavior* (read-only/idempotency/destructive/open-world) and, where applicable, *service domain* classification. > > Updates each toolkit package to depend on `arcade-mcp-server` (plus local `uv` source wiring) and bumps toolkit versions accordingly; minor `__all__` ordering tweaks in Math/Zendesk are included. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 3bde3a061194e1d1b6a4e8a2ebd608b17984db4f. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
from typing import Annotated, Any
|
|
|
|
from arcade_mcp_server.metadata import (
|
|
Behavior,
|
|
Classification,
|
|
Operation,
|
|
ServiceDomain,
|
|
ToolMetadata,
|
|
)
|
|
from arcade_tdk import ToolContext, tool
|
|
from arcade_tdk.auth import OAuth2
|
|
|
|
from arcade_zendesk.who_am_i_util import build_who_am_i_response
|
|
|
|
|
|
@tool(
|
|
requires_auth=OAuth2(id="zendesk", scopes=["read"]),
|
|
requires_secrets=["ZENDESK_SUBDOMAIN"],
|
|
metadata=ToolMetadata(
|
|
classification=Classification(
|
|
service_domains=[ServiceDomain.CUSTOMER_SUPPORT],
|
|
),
|
|
behavior=Behavior(
|
|
operations=[Operation.READ],
|
|
read_only=True,
|
|
destructive=False,
|
|
idempotent=True,
|
|
open_world=True,
|
|
),
|
|
),
|
|
)
|
|
async def who_am_i(
|
|
context: ToolContext,
|
|
) -> Annotated[
|
|
dict[str, Any],
|
|
"Get comprehensive user profile and Zendesk account information.",
|
|
]:
|
|
"""
|
|
Get comprehensive user profile and Zendesk account information.
|
|
|
|
This tool provides detailed information about the authenticated user including
|
|
their name, email, role, organization details, and Zendesk account context.
|
|
"""
|
|
user_info = await build_who_am_i_response(context)
|
|
return dict(user_info)
|