# What Parameters Can You Define for Functions in Claude Skill Files?

> Define strictly-typed GraphQL variables for functions in Claude skill files. Ensure reliable report generation with exact variable names and specific data types.

- Repository: [Anthropic/claude-plugins-community](https://github.com/anthropics/claude-plugins-community)
- Tags: api-reference
- Published: 2026-09-01

---

**Skill files in the `anthropics/claude-plugins-community` repository accept strictly-typed GraphQL variables as function parameters, requiring exact variable names and specific data types to orchestrate report generation reliably.**

The `tres-finance-plugin` demonstrates how these parameters for functions in skill files operate within the Claude plugin ecosystem. These skills interface with the **tres‑mcp** MCP server using GraphQL queries and mutations, where each function invocation relies on named variables defined in [`tres-finance-plugin/skills/tres-report-create/SKILL.md`](https://github.com/anthropics/claude-plugins-community/blob/main/tres-finance-plugin/skills/tres-report-create/SKILL.md). Understanding the exact parameter requirements prevents silent failures and ensures successful report creation.

## Core Required Parameters

Every report generation function requires four mandatory parameters that must be passed as GraphQL variables with precise naming:

- **`exportFormat`** (`String`): An upper-case identifier specifying the report type, such as `BASIC_RAW_TRANSACTIONS` or `ROLLUP_BREAKDOWN`.
- **`exportName`** (`String`): A unique, descriptive name for the report instance (e.g., "Transaction Ledger Q1 2025") that enables reliable row lookup.
- **`currency`** (`String`): The currency code for the report, defaulting to `"usd"` when omitted.
- **`outputFormat`** (`ReportOutputFormat`): An enum value specifying the container format, either `"CSV"` or `"XLSX"`.

These parameters are documented in the "Export parameters" section of [`SKILL.md`](https://github.com/anthropics/claude-plugins-community/blob/main/SKILL.md) and must be provided in every function call regardless of report type.

## Optional and Conditional Parameters

Beyond the core fields, specific report types require additional parameters defined in the "Reports needing extra parameters" section of the skill documentation:

### Date Range Filtering

For reports requiring temporal boundaries, you must supply ISO‑8601 formatted timestamps:
- **`timestamp_Gte`** (`DateTime`): The inclusive start date for the data set.
- **`timestamp_Lte`** (`DateTime`): The inclusive end date for the data set.

### Roll‑Up Breakdown Reports

When generating `ROLLUP_BREAKDOWN` reports, the function requires:
- **`identifier_In`** (`[String]`): An array of roll‑up parent hashes required to scope the report data.

### Cost Basis Inventory Reports

For `COST_BASIS_INVENTORY` reports, you must specify:
- **`children_Asset_AssetClass_In`** (`[String]`): Exactly one asset‑class ID to filter the inventory results.
- **`children_BelongsTo_In`** (`[String]`, optional): Additional filtering criteria for asset ownership relationships.

### Balance and Snapshot Reports

Balance reconstruction queries accept point‑in-time parameters:
- **`balanceDate`** (`DateTime`): The specific timestamp for balance reconstruction.
- **`commitId`** (`UUID`): A specific commit snapshot identifier for historical balance queries.

## Type Enforcement and Validation Rules

The `tres-report-create` skill enforces strict architectural constraints to prevent execution errors:

1. **Exact Variable Names**: Parameters must use the exact camelCase or snake_case names shown above (e.g., `exportName`, not `export_name` or `name`). Inline literals or renamed variables cause the server to silently ignore the request.
2. **Exact GraphQL Types**: Each parameter must match its declared GraphQL scalar type (`String`, `DateTime`, `[String]`, `UUID`, or `ReportOutputFormat`). The "⚠️ GraphQL variable types" section in [`SKILL.md`](https://github.com/anthropics/claude-plugins-community/blob/main/SKILL.md) defines these mappings explicitly.
3. **Unique Export Names**: Each invocation requires a distinct `exportName` value to facilitate reliable row identification and status tracking.
4. **Verification Requirements**: The skill implements Step 1c verification logic to confirm that a report row was actually created before proceeding, preventing false positives from malformed parameters.

When encountering report types not covered by static parameter tables, the skill falls back to **Step 1b**: introspecting the live GraphQL schema to dynamically discover required argument names and types.

## Practical Implementation Examples

### Standard Transaction Report

This GraphQL query demonstrates the core parameters for a basic transaction export:

```graphql
query($limit: Int, $offset: Int, $timestamp_Gte: DateTime, $timestamp_Lte: DateTime,
      $exportFormat: String, $exportName: String, $currency: String, $outputFormat: ReportOutputFormat) {
  transaction(limit: $limit, offset: $offset, timestamp_Gte: $timestamp_Gte,
              timestamp_Lte: $timestamp_Lte, exportFormat: $exportFormat,
              exportName: $exportName, currency: $currency, outputFormat: $outputFormat) {
    results { id }
    totalCount
  }
}

```

```json
{
  "limit": 1,
  "offset": 0,
  "timestamp_Gte": "2025-01-01T00:00:00Z",
  "timestamp_Lte": "2025-03-31T23:59:59Z",
  "exportFormat": "BASIC_RAW_TRANSACTIONS",
  "exportName": "Transaction Ledger Q1 2025",
  "currency": "usd",
  "outputFormat": "CSV"
}

```

### Rollup Breakdown with Array Parameters

Reports requiring roll‑up parent hashes must include the `identifier_In` array:

```graphql
query($exportFormat: String, $exportName: String, $outputFormat: ReportOutputFormat,
      $identifier_In: [String]) {
  transaction(exportFormat: $exportFormat, exportName: $exportName,
              outputFormat: $outputFormat, identifier_In: $identifier_In) {
    results { id }
  }
}

```

```json
{
  "exportFormat": "ROLLUP_BREAKDOWN",
  "exportName": "Rollup Breakdown Q1 2025",
  "outputFormat": "CSV",
  "identifier_In": ["0xabc123...", "0xdef456..."]
}

```

### Balance Snapshot with UUID

Point‑in‑time balance queries require `DateTime` and `UUID` types:

```graphql
query($exportFormat: String, $exportName: String, $outputFormat: ReportOutputFormat,
      $balanceDate: DateTime, $commitId: UUID) {
  organizationBalance(exportFormat: $exportFormat, exportName: $exportName,
                      outputFormat: $outputFormat, balanceDate: $balanceDate,
                      commitId: $commitId) {
    results { id }
  }
}

```

```json
{
  "exportFormat": "RAW_BALANCES",
  "exportName": "Balance Snapshot 2024‑12‑31",
  "outputFormat": "CSV",
  "balanceDate": "2024-12-31T00:00:00Z",
  "commitId": "123e4567-e89b-12d3-a456-426614174000"
}

```

## Summary

- **Required parameters** (`exportFormat`, `exportName`, `currency`, `outputFormat`) must appear in every function invocation within skill files.
- **Conditional parameters** depend on report type, including date ranges (`timestamp_Gte`/`Lte`), roll‑up identifiers (`identifier_In`), and balance timestamps (`balanceDate`).
- **Exact naming and typing** are enforced by the `tres-mcp` server; mismatches result in silent failures where no report is created.
- **Dynamic discovery** via GraphQL schema introspection handles edge cases not covered by static documentation in [`tres-report-create/SKILL.md`](https://github.com/anthropics/claude-plugins-community/blob/main/tres-report-create/SKILL.md).

## Frequently Asked Questions

### What happens if I use the wrong variable name in a skill file function?

The server will silently ignore the invocation and no report will be created. According to the [`tres-report-create/SKILL.md`](https://github.com/anthropics/claude-plugins-community/blob/main/tres-report-create/SKILL.md) documentation, parameters must use the exact variable names specified (such as `exportName` rather than `export_name` or `name`), as the GraphQL resolver strictly matches against these identifiers.

### Are all parameters for functions in skill files required?

No, only four parameters are universally required: `exportFormat`, `exportName`, `currency`, and `outputFormat`. Additional parameters like `timestamp_Gte`, `identifier_In`, or `balanceDate` are conditionally required based on the specific report type being generated, as detailed in the "Reports needing extra parameters" section of the skill documentation.

### What GraphQL types are supported for skill file parameters?

The skill files support standard GraphQL scalars including `String`, `DateTime`, `UUID`, and custom enums like `ReportOutputFormat`, plus array variants such as `[String]` for list inputs. The "⚠️ GraphQL variable types" section in [`SKILL.md`](https://github.com/anthropics/claude-plugins-community/blob/main/SKILL.md) provides the complete type mapping that must be adhered to for successful variable passing.

### How does the skill handle new report types not in the documentation?

When encountering uncatalogued report types, the skill executes **Step 1b**: it introspects the live GraphQL schema to dynamically discover the exact argument names and types required for that specific query or mutation, ensuring the function parameters remain compatible with the backend API even when static documentation is incomplete.