<!--
{
  "availability" : [
    "iOS: 26.0.0 -",
    "iPadOS: 26.0.0 -",
    "macCatalyst: 26.0.0 -",
    "macOS: 26.0.0 -",
    "visionOS: 26.0.0 -",
    "watchOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "FoundationModels",
  "identifier" : "/documentation/FoundationModels/Tool/call(arguments:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "Foundation Models"
    ],
    "preciseIdentifier" : "s:16FoundationModels4ToolP4call9arguments6OutputQz9ArgumentsQz_tYaKF"
  },
  "title" : "call(arguments:)"
}
-->

# call(arguments:)

Performs the tool’s action when a language model wants to use this tool.

```
@concurrent func call(arguments: Self.Arguments) async throws -> Self.Output
```

## Discussion

If errors are throw in the body of this method, the framework wraps them in a
[`LanguageModelSession.ToolCallError`](/documentation/FoundationModels/LanguageModelSession/ToolCallError) and rethrows them at the call site
of [`respond(to:options:)`](/documentation/FoundationModels/LanguageModelSession/respond(to:options:)-6a2gb).

> Note: This method may be invoked concurrently with itself or with other tools.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)