---
title: "CallEnvelope"
description: "what every call carries beside its input: the scope, the two dates for a read, and for a change the key made from the input"
section: concepts
address: /concepts/callenvelope
contract: 0476e35e6e275db5
---

# CallEnvelope

what every call carries beside its input: the scope, the two dates for a read, and for a change the key made from the input

[figure: CallEnvelope is a value at none scope. The drawing shows its fields and the objects that they point at.]

| property | value |
|---|---|
| kind | value |
| scope | none |
| key | none |
| store | none |
| family | harness |



## Fields


| field | type | required | note |
|---|---|---|---|
| `scope` | [Scope](/concepts/scope) | yes |  |
| `as_of` | [TwoDates](/concepts/twodates) | no | for a read; both default to now |
| `key` | `text` | no | for a change: made from the input, so a repeat writes nothing |
| `surface` | `one of the interface \| our agent \| an outside agent \| the api` | yes | the surface it calls from |



## Routes that use it
No route takes or returns CallEnvelope directly. The record holds it, and the objects that point at it reach it.
