# `PtcRunner.Upstream.Runtime`
[🔗](https://github.com/andreasronge/ptc_runner/blob/main/lib/ptc_runner/upstream/runtime.ex#L1)

OTP-backed upstream runtime handle for root `ptc_runner` callers.

# `call_tool`

```elixir
@spec call_tool(struct() | pid(), String.t(), String.t(), map(), keyword()) ::
  {:ok, term()} | {:error, atom(), String.t()}
```

# `catalog_snapshot`

```elixir
@spec catalog_snapshot(struct() | pid()) :: [map()]
```

# `catalog_text`

```elixir
@spec catalog_text(struct() | pid()) :: String.t()
```

# `child_spec`

```elixir
@spec child_spec(keyword()) :: Supervisor.child_spec()
```

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `defaults`

```elixir
@spec defaults(struct() | pid()) :: map()
```

# `diagnostics`

```elixir
@spec diagnostics(struct() | pid()) :: map()
```

# `scrub`

```elixir
@spec scrub(struct() | pid(), term()) :: term()
```

# `start_link`

```elixir
@spec start_link(keyword()) ::
  {:ok,
   %PtcRunner.Upstream.Runtime{
     catalog_exposure_mode: term(),
     catalog_snapshot_mode: term(),
     pid: term()
   }}
  | :ignore
  | {:error, term()}
```

# `stop`

```elixir
@spec stop(struct() | pid()) :: :ok
```

# `upstream`

```elixir
@spec upstream(struct() | pid(), String.t()) :: map() | nil
```

# `upstream_names`

```elixir
@spec upstream_names(struct() | pid()) :: [String.t()]
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
