Dash0 acquires Polar Signals
Connect goose to your telemetry data on Dash0 through the remote MCP server, and send the agent's own OpenTelemetry traces, metrics, and logs back to Dash0.
goose is an open source coding agent hosted under the Agentic AI Foundation. It runs in your terminal, calls tools, edits files, and speaks the Model Context Protocol. With native support for remote MCP servers, goose can access your telemetry data on Dash0 to enhance its coding and problem-solving capabilities.
goose also links the OpenTelemetry SDK, so it reports on itself. Pointing that telemetry at Dash0 shows you what the agent did, how long the model took, and how many tokens each session consumed.
goose connects to Dash0 in two directions. Our remote MCP server lets goose read your telemetry data, navigate and analyze it, while leveraging the same capabilities that human users have access to in the UI. Separately, goose emits OpenTelemetry data about its own sessions, which you can send to Dash0 to see what the agent did and what it cost.
Set up whichever direction you need. They are independent.
The Dash0 MCP server supports two authentication methods:
For more details on token lifecycle, audit logs, and revocation, see the Dash0 MCP Server integration.
Note that goose uses uri where most other MCP clients use url, and streamable_http with an underscore.
Add the extension to ~/.config/goose/config.yaml:
You can also add it interactively. Run goose configure, choose Add Extension → Remote Extension (Streamable
HTTP), enter {{endpoint_mcp}} as the URL, and skip the headers.
Start a session. On first connection, goose registers itself with Dash0 through dynamic client registration and opens a browser window where you log in and grant consent. You can review and revoke connected applications under User Settings → Applications in Dash0.
goose obtains its OAuth client ID automatically, so no client_id or client_secret_key entry is needed. Those
fields are only for MCP servers that require a pre-registered OAuth client.
Before configuring the Dash0 MCP server with a Bearer token, create an auth token with the correct permissions:
*) - Recommended for full MCP functionality*:read) - For read-only access to your telemetry dataTokens with limited permissions (e.g., scoped to specific datasets or with only "Ingesting" permissions) will not work with the MCP server. The MCP server requires organization-wide read access to query your telemetry data.
Add the extension to ~/.config/goose/config.yaml:
Alternatively, run goose configure, choose Add Extension → Remote Extension (Streamable HTTP), and enter:
dash0{{endpoint_mcp}}Authorization: Bearer {{token}}goose info -v prints the whole configuration file, including the Authorization header in plaintext. Keep that in
mind when sharing output for support.
Run goose info -v to confirm the file still parses and the extension is listed. Then start a session and ask goose
what it can reach:
Tools such as getServiceCatalog, getSpans, promql, and listDashboards confirm the connection.
goose links the OpenTelemetry SDK and reads the standard OTEL_* environment variables at startup, initializing traces,
metrics, and logs if it finds an endpoint. No plugin or code change is needed.
GOOSE_TELEMETRY_ENABLED is not the setting you want. That flag controls goose's own product analytics and has
nothing to do with OTLP export.
Set the data export endpoint and authorization token:
goose appends /v1/traces, /v1/metrics, and /v1/logs itself, so leave the path off the endpoint.
You can specify which dataset to send data to by adding the Dash0-Dataset header. For example:
For more information, see the dataset documentation.
http/protobuf on port 4318.gen_ai.operation.name set to invoke_agent, chat, or execute_tool.
Inference spans carry gen_ai.request.model, gen_ai.provider.name, and per-call token usage. Tool calls carry
gen_ai.tool.name and gen_ai.tool.call.id.goose.* counters covering sessions, tool calls, recipe runs, CLI commands, and the prompt injection
scanner. The exact set changes between goose releases, so browse the goose. prefix in the Metrics Explorer to see
what your version emits.Tool call started and Session completed.Message content is opt-in through OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true, which populates
gen_ai.input.messages and gen_ai.output.messages. goose also emits user_message, trace_input, and input
attributes that are not covered by that flag and carry the prompt and written file contents regardless. Drop them at
the collector if your agent touches sensitive code.
goose run -t "Say hello".reply appears in Dash0 under the goose service.