diff --git a/docs/build-your-software-catalog/sync-data-to-catalog/ai-agents/claude/_category_.json b/docs/build-your-software-catalog/sync-data-to-catalog/ai-agents/claude/_category_.json
new file mode 100644
index 0000000000..dd54709f5a
--- /dev/null
+++ b/docs/build-your-software-catalog/sync-data-to-catalog/ai-agents/claude/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Claude AI",
+ "position": 3
+}
+
diff --git a/docs/build-your-software-catalog/sync-data-to-catalog/ai-agents/claude/claude.md b/docs/build-your-software-catalog/sync-data-to-catalog/ai-agents/claude/claude.md
new file mode 100644
index 0000000000..57c554a3a7
--- /dev/null
+++ b/docs/build-your-software-catalog/sync-data-to-catalog/ai-agents/claude/claude.md
@@ -0,0 +1,1104 @@
+import Tabs from "@theme/Tabs"
+import TabItem from "@theme/TabItem"
+import Prerequisites from "/docs/build-your-software-catalog/sync-data-to-catalog/templates/_ocean_helm_prerequisites_block.mdx"
+import AdvancedConfig from '/docs/generalTemplates/_ocean_advanced_configuration_note.md'
+import PortApiRegionTip from "/docs/generalTemplates/_port_region_parameter_explanation_template.md"
+
+# Claude AI
+
+Port's Claude AI integration allows you to ingest Claude API usage metrics into your software catalog using the [Ocean Custom Integration](/build-your-software-catalog/custom-integration/ocean-custom-integration/overview) framework. After installing the integration, you can create dashboards to monitor API usage, track costs, analyze model performance, and measure workspace-level metrics using Port's dashboard widgets.
+
+
+
+
+## Supported metrics
+
+The Claude AI integration can ingest usage metrics from the Anthropic Admin API into Port:
+
+**Available for all Claude AI organizations:**
+- `claude_usage_record` - Organization-level usage metrics from `/v1/organizations/usage_report/messages` including token consumption (input/output/cache), request counts, and detailed breakdowns by workspace, model, service tier, context window, and API key.
+- `claude_cost_record` - Cost tracking from `/v1/organizations/cost_report` for monitoring organizational spending.
+- `claude_workspace_usage` - Workspace-level usage metrics when grouping by `workspace_id`.
+- `claude_model_usage` - Model-level usage metrics when grouping by `model`.
+- `claude_code_analytics` - Claude AI Code usage metrics from `/v1/organizations/usage_report/claude_code` including sessions, lines of code edited, commits, and pull requests (requires Claude AI Code access).
+
+:::info User-level metrics
+The Anthropic Admin API does not currently support grouping usage data by user (`user_id`). User-level analytics are not available through these endpoints. If you need user-level insights, consider using Claude AI Code analytics or other internal telemetry sources.
+:::
+
+
+
+
+## Prerequisites
+
+To use this integration, you need:
+
+- An [Anthropic Admin API](https://docs.anthropic.com/en/api/administration-api) generated from the Admin section of the Anthropic Console.
+- The API key should have permissions to read usage data and billing information.
+
+
+## Installation
+
+Choose one of the following installation methods to deploy the Ocean Custom Integration:
+
+ Prerequisites
+
+ Installation
+
+1. Add Port's Helm repo and install the Ocean Custom Integration:
+
+:::info Replace placeholders
+Remember to replace the placeholders for `YOUR_PORT_CLIENT_ID`, `YOUR_PORT_CLIENT_SECRET`, and `YOUR_ANTHROPIC_API_KEY`.
+:::
+
+```bash showLineNumbers
+helm repo add --force-update port-labs https://port-labs.github.io/helm-charts
+helm upgrade --install my-ocean-claude-integration port-labs/port-ocean \
+ --set port.clientId="YOUR_PORT_CLIENT_ID" \
+ --set port.clientSecret="YOUR_PORT_CLIENT_SECRET" \
+ --set port.baseUrl="https://api.getport.io" \
+ --set initializePortResources=true \
+ --set scheduledResyncInterval=120 \
+ --set integration.identifier="my-ocean-claude-integration" \
+ --set integration.type="custom" \
+ --set integration.eventListener.type="POLLING" \
+ --set integration.config.baseUrl="https://api.anthropic.com" \
+ --set integration.config.authType="bearer" \
+ --set integration.config.paginationType="none" \
+ --set integration.secrets.token="YOUR_ANTHROPIC_API_KEY"
+```
+
+ Configuration parameters
+
+This table summarizes the available parameters for the installation.
+
+| Parameter | Description | Example | Required |
+|------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------|----------|
+| `port.clientId` | Your Port [client id](https://docs.port.io/build-your-software-catalog/custom-integration/api/#find-your-port-credentials) | | ✅ |
+| `port.clientSecret` | Your Port [client secret](https://docs.port.io/build-your-software-catalog/custom-integration/api/#find-your-port-credentials) | | ✅ |
+| `port.baseUrl` | Your Port API URL - `https://api.getport.io` for EU, `https://api.us.getport.io` for US | | ✅ |
+| `integration.config.baseUrl` | The base URL of the Anthropic API instance | https://api.anthropic.com | ✅ |
+| `integration.config.authType` | The authentication type for the API (use `bearer` for Anthropic) | bearer | ✅ |
+| `integration.secrets.token` | Your Anthropic Console API key | sk-ant-api03-...xxxxxxxxx | ✅ |
+| `integration.config.paginationType` | How your API handles pagination (offset, page, cursor, or none) | none | ❌ |
+| `integration.eventListener.type` | The event listener type. Read more about [event listeners](https://ocean.getport.io/framework/features/event-listener) | POLLING | ✅ |
+| `integration.type` | The integration type (must be `custom` for Ocean Custom Integration) | custom | ✅ |
+| `integration.identifier` | Unique identifier for the integration instance | my-ocean-claude-integration | ✅ |
+| `scheduledResyncInterval` | The number of minutes between each resync. When not set the integration will resync for each event listener resync event. Read more about [scheduledResyncInterval](https://ocean.getport.io/develop-an-integration/integration-configuration/#scheduledresyncinterval---run-scheduled-resync) | 120 | ❌ |
+| `initializePortResources` | Default true, When set to true the integration will create default blueprints and the port App config Mapping. Read more about [initializePortResources](https://ocean.getport.io/develop-an-integration/integration-configuration/#initializeportresources---initialize-port-resources) | true | ❌ |
+| `sendRawDataExamples` | Enable sending raw data examples from the third party API to port for testing and managing the integration mapping. Default is true | true | ❌ |
+
+
+
+Claude AI Usage Record Blueprint (Click to expand)
+
+ Organization-level daily usage metrics:
+
+ ```json showLineNumbers
+ {
+ "identifier": "claude_usage_record",
+ "description": "A daily summary record of Claude AI API usage for an organization",
+ "title": "Claude AI Usage Record",
+ "icon": "Anthropic",
+ "schema": {
+ "properties": {
+ "record_date": {
+ "type": "string",
+ "format": "date-time",
+ "title": "Record Date (UTC)"
+ },
+ "organization_id": {
+ "type": "string",
+ "title": "Organization ID"
+ },
+ "organization_name": {
+ "type": "string",
+ "title": "Organization Name"
+ },
+ "total_requests": {
+ "type": "number",
+ "title": "Total Requests"
+ },
+ "successful_requests": {
+ "type": "number",
+ "title": "Successful Requests"
+ },
+ "failed_requests": {
+ "type": "number",
+ "title": "Failed Requests"
+ },
+ "total_input_tokens": {
+ "type": "number",
+ "title": "Total Input Tokens"
+ },
+ "total_output_tokens": {
+ "type": "number",
+ "title": "Total Output Tokens"
+ },
+ "total_cache_read_tokens": {
+ "type": "number",
+ "title": "Total Cache Read Tokens"
+ },
+ "total_cache_write_tokens": {
+ "type": "number",
+ "title": "Total Cache Write Tokens"
+ },
+ "total_cost_usd": {
+ "type": "number",
+ "title": "Total Cost (USD)"
+ },
+ "most_used_model": {
+ "type": "string",
+ "title": "Most Used Model"
+ },
+ "model_breakdown": {
+ "type": "object",
+ "title": "Model Usage Breakdown"
+ },
+ "active_api_keys": {
+ "type": "number",
+ "title": "Active API Keys"
+ }
+ },
+ "required": ["record_date", "organization_id"]
+ },
+ "mirrorProperties": {},
+ "calculationProperties": {
+ "success_rate": {
+ "title": "Success Rate",
+ "description": "Percentage of successful API requests",
+ "calculation": "if .properties.total_requests > 0 then (.properties.successful_requests / .properties.total_requests) * 100 else 0 end",
+ "type": "number",
+ "colorized": true,
+ "colors": {
+ "80": "red",
+ "90": "orange",
+ "95": "yellow",
+ "98": "green"
+ }
+ },
+ "total_tokens": {
+ "title": "Total Tokens",
+ "description": "Sum of input and output tokens",
+ "calculation": ".properties.total_input_tokens + .properties.total_output_tokens",
+ "type": "number"
+ }
+ },
+ "aggregationProperties": {},
+ "relations": {}
+ }
+ ```
+
+ Claude AI Cost Record Blueprint (Click to expand)
+
+ Cost tracking for organizational spending:
+
+ ```json showLineNumbers
+ {
+ "identifier": "claude_cost_record",
+ "description": "Daily cost tracking for Claude API usage",
+ "title": "Claude AI Cost Record",
+ "icon": "Anthropic",
+ "schema": {
+ "properties": {
+ "record_date": {
+ "type": "string",
+ "format": "date-time",
+ "title": "Record Date (UTC)"
+ },
+ "organization_id": {
+ "type": "string",
+ "title": "Organization ID"
+ },
+ "organization_name": {
+ "type": "string",
+ "title": "Organization Name"
+ },
+ "total_cost_usd": {
+ "type": "number",
+ "title": "Total Cost (USD)"
+ },
+ "cost_breakdown": {
+ "type": "object",
+ "title": "Cost Breakdown"
+ }
+ },
+ "required": [
+ "record_date",
+ "organization_id"
+ ]
+ },
+ "mirrorProperties": {},
+ "calculationProperties": {},
+ "aggregationProperties": {},
+ "relations": {}
+ }
+ ```
+
+ Claude AI Workspace Usage Blueprint (Click to expand)
+
+ Workspace-level usage metrics:
+
+ ```json showLineNumbers
+ {
+ "identifier": "claude_workspace_usage",
+ "description": "Usage metrics broken down by workspace",
+ "title": "Claude AI Workspace Usage",
+ "icon": "Anthropic",
+ "schema": {
+ "properties": {
+ "record_date": {
+ "type": "string",
+ "format": "date-time",
+ "title": "Record Date (UTC)"
+ },
+ "organization_id": {
+ "type": "string",
+ "title": "Organization ID"
+ },
+ "workspace_id": {
+ "type": "string",
+ "title": "Workspace ID"
+ },
+ "workspace_name": {
+ "type": "string",
+ "title": "Workspace Name"
+ },
+ "total_requests": {
+ "type": "number",
+ "title": "Total Requests"
+ },
+ "successful_requests": {
+ "type": "number",
+ "title": "Successful Requests"
+ },
+ "failed_requests": {
+ "type": "number",
+ "title": "Failed Requests"
+ },
+ "input_tokens": {
+ "type": "number",
+ "title": "Input Tokens"
+ },
+ "output_tokens": {
+ "type": "number",
+ "title": "Output Tokens"
+ },
+ "cache_read_tokens": {
+ "type": "number",
+ "title": "Cache Read Tokens"
+ },
+ "cache_write_tokens": {
+ "type": "number",
+ "title": "Cache Write Tokens"
+ },
+ "cost_usd": {
+ "type": "number",
+ "title": "Cost (USD)"
+ }
+ },
+ "required": [
+ "record_date",
+ "organization_id",
+ "workspace_id"
+ ]
+ },
+ "mirrorProperties": {},
+ "calculationProperties": {
+ "success_rate": {
+ "title": "Success Rate",
+ "calculation": "if .properties.total_requests > 0 then (.properties.successful_requests / .properties.total_requests) * 100 else 0 end",
+ "type": "number",
+ "colorized": true,
+ "colors": {
+ "80": "red",
+ "90": "orange",
+ "95": "yellow",
+ "98": "green"
+ }
+ },
+ "total_tokens": {
+ "title": "Total Tokens",
+ "calculation": ".properties.input_tokens + .properties.output_tokens",
+ "type": "number"
+ }
+ },
+ "aggregationProperties": {},
+ "relations": {}
+ }
+ ```
+
+ Claude AI Model Usage Blueprint (Click to expand)
+
+ Model-level usage statistics:
+
+ ```json showLineNumbers
+ {
+ "identifier": "claude_model_usage",
+ "description": "Usage metrics broken down by Claude model type",
+ "title": "Claude AI Model Usage",
+ "icon": "Anthropic",
+ "schema": {
+ "properties": {
+ "record_date": {
+ "type": "string",
+ "format": "date-time",
+ "title": "Record Date (UTC)"
+ },
+ "organization_id": {
+ "type": "string",
+ "title": "Organization ID"
+ },
+ "model_name": {
+ "type": "string",
+ "title": "Model Name"
+ },
+ "model_id": {
+ "type": "string",
+ "title": "Model ID"
+ },
+ "total_requests": {
+ "type": "number",
+ "title": "Total Requests"
+ },
+ "successful_requests": {
+ "type": "number",
+ "title": "Successful Requests"
+ },
+ "failed_requests": {
+ "type": "number",
+ "title": "Failed Requests"
+ },
+ "input_tokens": {
+ "type": "number",
+ "title": "Input Tokens"
+ },
+ "output_tokens": {
+ "type": "number",
+ "title": "Output Tokens"
+ },
+ "cache_read_tokens": {
+ "type": "number",
+ "title": "Cache Read Tokens"
+ },
+ "cache_write_tokens": {
+ "type": "number",
+ "title": "Cache Write Tokens"
+ },
+ "cost_usd": {
+ "type": "number",
+ "title": "Cost (USD)"
+ }
+ },
+ "required": [
+ "record_date",
+ "organization_id",
+ "model_name"
+ ]
+ },
+ "mirrorProperties": {},
+ "calculationProperties": {
+ "success_rate": {
+ "title": "Success Rate",
+ "calculation": "if .properties.total_requests > 0 then (.properties.successful_requests / .properties.total_requests) * 100 else 0 end",
+ "type": "number",
+ "colorized": true,
+ "colors": {
+ "80": "red",
+ "90": "orange",
+ "95": "yellow",
+ "98": "green"
+ }
+ },
+ "total_tokens": {
+ "title": "Total Tokens",
+ "calculation": ".properties.input_tokens + .properties.output_tokens",
+ "type": "number"
+ },
+ "average_tokens_per_request": {
+ "title": "Avg Tokens/Request",
+ "calculation": "if .properties.total_requests > 0 then ((.properties.input_tokens + .properties.output_tokens) / .properties.total_requests) else 0 end",
+ "type": "number"
+ }
+ },
+ "aggregationProperties": {},
+ "relations": {}
+ }
+ ```
+
+ Claude AI Code analytics Blueprint (Click to expand)
+
+ Claude Code usage metrics for tracking development activity:
+
+ ```json showLineNumbers
+ {
+ "identifier": "claude_code_analytics",
+ "description": "Daily Claude Code usage metrics including sessions, lines of code, commits, and PRs",
+ "title": "Claude AI Code Analytics",
+ "icon": "Anthropic",
+ "schema": {
+ "properties": {
+ "record_date": {
+ "type": "string",
+ "format": "date-time",
+ "title": "Record Date (UTC)"
+ },
+ "organization_id": {
+ "type": "string",
+ "title": "Organization ID"
+ },
+ "organization_name": {
+ "type": "string",
+ "title": "Organization Name"
+ },
+ "total_sessions": {
+ "type": "number",
+ "title": "Total Sessions"
+ },
+ "total_lines_edited": {
+ "type": "number",
+ "title": "Total Lines Edited"
+ },
+ "total_commits": {
+ "type": "number",
+ "title": "Total Commits"
+ },
+ "total_pull_requests": {
+ "type": "number",
+ "title": "Total Pull Requests"
+ },
+ "active_users": {
+ "type": "number",
+ "title": "Active Users"
+ },
+ "breakdown": {
+ "type": "object",
+ "title": "Usage Breakdown"
+ }
+ },
+ "required": [
+ "record_date",
+ "organization_id"
+ ]
+ },
+ "mirrorProperties": {},
+ "calculationProperties": {
+ "avg_lines_per_session": {
+ "title": "Avg Lines/Session",
+ "calculation": "if .properties.total_sessions > 0 then (.properties.total_lines_edited / .properties.total_sessions) else 0 end",
+ "type": "number"
+ },
+ "avg_commits_per_user": {
+ "title": "Avg Commits/User",
+ "calculation": "if .properties.active_users > 0 then (.properties.total_commits / .properties.active_users) else 0 end",
+ "type": "number"
+ }
+ },
+ "aggregationProperties": {},
+ "relations": {}
+ }
+ ```
+
+ Organization usage metrics mapping (Click to expand)
+
+ This endpoint provides detailed usage metrics including token consumption and request counts:
+
+ ```yaml showLineNumbers
+ resources:
+ - kind: /v1/organizations/usage_report/messages
+ selector:
+ query: 'true'
+ data_path: '.data[].results[]'
+ query_params:
+ starting_at: '((now | floor) - (86400 * 30)) | strftime("%Y-%m-%dT00:00:00Z")'
+ ending_at: '(now | floor) | strftime("%Y-%m-%dT00:00:00Z")'
+ bucket_width: "1d"
+ port:
+ entity:
+ mappings:
+ identifier: '((.date // .starting_at // "unknown") | tostring) + "@org"'
+ title: '"Claude Usage - " + ((.date // .starting_at // "unknown") | tostring)'
+ blueprint: '"claude_usage_record"'
+ properties:
+ record_date: (.date // .starting_at // "")
+ organization_id: .organization_id // ""
+ organization_name: .organization_name // ""
+ total_requests: .requests // 0
+ successful_requests: .successful_requests // 0
+ failed_requests: (.failed_requests // 0)
+ total_input_tokens: .input_tokens // 0
+ total_output_tokens: .output_tokens // 0
+ total_cache_read_tokens: .cache_read_input_tokens // 0
+ total_cache_write_tokens: .cache_write_input_tokens // 0
+ total_cost_usd: .cost_usd // 0
+ model_breakdown: .model_breakdown // {}
+ ```
+
+ :::info Response structure
+ The API returns data in buckets. Each bucket has `starting_at`, `ending_at`, and a `results[]` array. When using `data_path: '.data[].results[]'`, you'll iterate over all results from all buckets. The actual field names in the results may vary - adjust the property mappings based on your actual API response.
+
+ **Pagination:** The API supports pagination via `has_more` and `next_page` fields. For large date ranges, you may need to handle pagination by using the `next_page` token in subsequent requests.
+ :::
+
+ Cost report mapping (Click to expand)
+
+ This endpoint provides cost data for monitoring organizational spending:
+
+ ```yaml showLineNumbers
+ resources:
+ - kind: /v1/organizations/cost_report
+ selector:
+ query: 'true'
+ data_path: '.data[].results[]'
+ query_params:
+ starting_at: '((now | floor) - (86400 * 30)) | strftime("%Y-%m-%dT00:00:00Z")'
+ ending_at: '(now | floor) | strftime("%Y-%m-%dT00:00:00Z")'
+ bucket_width: "1d"
+ port:
+ entity:
+ mappings:
+ identifier: '((.date // .starting_at // "unknown") | tostring) + "@org"'
+ title: '"Claude Cost - " + ((.date // .starting_at // "unknown") | tostring)'
+ blueprint: '"claude_cost_record"'
+ properties:
+ record_date: (.starting_at // .date)
+ organization_id: .organization_id // ""
+ organization_name: .organization_name // ""
+ total_cost_usd: .cost_usd // 0
+ cost_breakdown: .cost_breakdown // {}
+ ```
+
+ Workspace-level usage metrics mapping (Click to expand)
+
+ Track usage metrics at the workspace level by grouping the usage report by `workspace_id`:
+
+ ```yaml showLineNumbers
+ resources:
+ - kind: /v1/organizations/usage_report/messages
+ selector:
+ query: 'true'
+ query_params:
+ starting_at: '((now | floor) - (86400 * 30)) | strftime("%Y-%m-%dT00:00:00Z")'
+ ending_at: '(now | floor) | strftime("%Y-%m-%dT00:00:00Z")'
+ bucket_width: "1d"
+ 'group_by[]': "workspace_id"
+ data_path: '.data[].results[]'
+ port:
+ entity:
+ mappings:
+ identifier: .workspace_id + "@" + ((.date // .starting_at // "unknown") | tostring)
+ title: (.workspace_name // .workspace_id) + " - " + ((.date // .starting_at // "unknown") | tostring)
+ blueprint: '"claude_workspace_usage"'
+ properties:
+ record_date: (.starting_at // .date)
+ organization_id: .organization_id // ""
+ workspace_id: .workspace_id
+ workspace_name: .workspace_name // ""
+ total_requests: .requests // 0
+ successful_requests: .successful_requests // 0
+ failed_requests: .failed_requests // 0
+ input_tokens: .input_tokens // 0
+ output_tokens: .output_tokens // 0
+ cache_read_tokens: .cache_read_input_tokens // 0
+ cache_write_tokens: .cache_write_input_tokens // 0
+ cost_usd: .cost_usd // 0
+ ```
+
+ Model-level usage metrics mapping (Click to expand)
+
+ Track usage metrics at the model level by grouping the usage report by `model_id`:
+
+ ```yaml showLineNumbers
+ resources:
+ - kind: /v1/organizations/usage_report/messages
+ selector:
+ query: 'true'
+ query_params:
+ starting_at: '((now | floor) - (86400 * 30)) | strftime("%Y-%m-%dT00:00:00Z")'
+ ending_at: '(now | floor) | strftime("%Y-%m-%dT00:00:00Z")'
+ bucket_width: "1d"
+ 'group_by[]': "model"
+ data_path: '.data[].results[]'
+ port:
+ entity:
+ mappings:
+ identifier: .model + "@" + ((.date // .starting_at // "unknown") | tostring)
+ title: .model + " usage - " + ((.date // .starting_at // "unknown") | tostring)
+ blueprint: '"claude_model_usage"'
+ properties:
+ record_date: (.starting_at // .date)
+ organization_id: .organization_id // ""
+ model_name: .model
+ model_id: .model
+ total_requests: .requests // 0
+ successful_requests: .successful_requests // 0
+ failed_requests: .failed_requests // 0
+ input_tokens: .input_tokens // 0
+ output_tokens: .output_tokens // 0
+ cache_read_tokens: .cache_read_input_tokens // 0
+ cache_write_tokens: .cache_write_input_tokens // 0
+ cost_usd: .cost_usd // 0
+ ```
+
+ Claude Code analytics mapping (Click to expand)
+
+ Track Claude AI Code usage metrics including sessions, lines of code, commits, and pull requests:
+
+ :::info Requires Claude Code access
+ This endpoint requires access to Claude Code. You'll receive an error if your organization doesn't have Claude Code enabled.
+ :::
+
+ ```yaml showLineNumbers
+ resources:
+ - kind: /v1/organizations/usage_report/claude_code
+ selector:
+ query: 'true'
+ data_path: '.data[]'
+ query_params:
+ starting_at: '((now | floor) - (86400 * 30)) | strftime("%Y-%m-%d")'
+ port:
+ entity:
+ mappings:
+ identifier: .organization_id + "@code@" + (.date // .starting_at)
+ title: "Claude Code Analytics - " + (.date // .starting_at)
+ blueprint: '"claude_code_analytics"'
+ properties:
+ record_date: (.date // .starting_at)
+ organization_id: .organization_id // ""
+ organization_name: .organization_name // ""
+ total_sessions: .sessions // 0
+ total_lines_edited: .lines_of_code_edited // 0
+ total_commits: .commits // 0
+ total_pull_requests: .pull_requests // 0
+ active_users: .active_users // 0
+ breakdown: .breakdown // {}
+ ```
+
+
+
+### Create a dashboard
+
+1. Navigate to your [software catalog](https://app.getport.io/organization/catalog).
+
+2. Click on the **`+ New`** button in the left sidebar.
+
+3. Select **New dashboard**.
+
+4. Name the dashboard **Claude AI Insights**.
+
+5. Input `Monitor Claude API usage, costs, and performance metrics` under **Description**.
+
+6. Select the `Anthropic` icon.
+
+7. Click `Create`.
+
+You now have a blank dashboard where you can add widgets to visualize your Claude metrics.
+
+### Add widgets
+
+Create the following widgets to gain insights into your Claude API usage:
+
+