grpcurl describe: Inspect gRPC Messages and Methods
grpcurl describe <symbol> prints the definition of a gRPC service, method, or message so you know the request shape.
Before calling a method you need its request type. describe shows the schema of any symbol, and with -msg-template it prints a blank JSON template of a message you can fill in.
What it does
grpcurl describe <symbol> prints the protobuf definition of a service, method, or message type, resolved via reflection or local .proto files. Adding -msg-template to a message type outputs a JSON skeleton with default fields, giving you the exact shape to pass to -d for a call.
Common usage
grpcurl -plaintext localhost:50051 describe my.package.Greeter
grpcurl -plaintext localhost:50051 describe my.package.Greeter.SayHello
# JSON template for a request message
grpcurl -plaintext -msg-template localhost:50051 \
describe my.package.HelloRequestOptions
| Flag | What it does |
|---|---|
| describe [symbol] | Describe a service, method, or message |
| -msg-template | Print a JSON template for a message type |
| -plaintext | Cleartext connection (no TLS) |
| -proto / -import-path | Resolve symbols from local .proto files |
In CI
describe -msg-template is a quick way to generate the -d payload for a smoke test without hand-writing the JSON. When reflection is unavailable, describe still works if you point it at the .proto files with -proto and -import-path.
Common errors in CI
Failed to resolve symbol "X": Symbol not found means the service or message name is wrong or reflection lacks it; check the exact name with list. server does not support the reflection API means you must supply -proto files. A dial/connection refused error means the server is not up yet.