> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tracecat.com/llms.txt
> Use this file to discover all available pages before exploring further.

# gRPC

## `core.grpc.request`

Call a gRPC method using a runtime-compiled protobuf definition.

### Secrets

Optional secrets:

* `grpc_mtls`: required values `TLS_CERTIFICATE`, `TLS_PRIVATE_KEY`.
* `grpc_ca_cert`: required values `CA_CERTIFICATE`.

### Inputs

<ParamField path="method_name" type="string" required>
  gRPC method name (e.g., 'Query').
</ParamField>

<ParamField path="proto" type="string" required>
  Inline .proto definition.
</ParamField>

<ParamField path="service_name" type="string" required>
  gRPC service name (e.g., 'API').
</ParamField>

<ParamField path="target" type="string" required>
  gRPC server address in host:port format.
</ParamField>

<ParamField path="insecure" type="boolean">
  Use an insecure plaintext channel. Defaults to False (TLS channel).

  Default: `false`.
</ParamField>

<ParamField path="payload" type="object | null">
  Request payload as a dict matching the protobuf schema.

  Default: `null`.
</ParamField>

<ParamField path="timeout_seconds" type="number | null">
  Timeout in seconds for the RPC. Defaults to no timeout.

  Default: `null`.
</ParamField>

### Examples

**Call a gRPC service**

```yaml theme={null}
- ref: grpc_query
  action: core.grpc.request
  args:
    target: grpc.example.com:443
    service_name: Alerts
    method_name: GetAlert
    proto: |
      syntax = "proto3";

      package alerts;

      service Alerts {
        rpc GetAlert (GetAlertRequest) returns (AlertResponse);
      }

      message GetAlertRequest {
        string id = 1;
      }

      message AlertResponse {
        string id = 1;
        string severity = 2;
      }
    payload:
      id: ${{ TRIGGER.alert_id }}
```
