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

# Add a source

> Save text, a public web page, or a file in the active project and confirm that an agent can retrieve its contents.

Use a source when you need to preserve original material for later retrieval,
quotation, or extraction. Adding a source does not require a Shape.

## Before you start

* [Check the active project](/runtime/orient).
* Choose a title people will recognize later.
* Decide whether you are saving text, a public URL, or a file.
* Keep extraction separate unless you want the agent to interpret the material now.

## Ask your agent

For a public page:

> Save this page as a source in the active Penumbra project:
> [https://example.com/report](https://example.com/report). Do not extract it. Tell me when it is ready and
> give me the source title and id.

For text in the conversation:

> Save the following as a source titled “Customer interview — July 21.”
> Preserve the wording exactly and tell me when it is ready: \[paste the text]

## Steps

<Steps>
  <Step title="Confirm the project">
    The agent checks where the source will be saved.
  </Step>

  <Step title="Add the material">
    It submits the text, public URL, or uploaded file with the title you chose.
  </Step>

  <Step title="Follow the receipt when needed">
    A slow URL may return a tracking receipt. The agent checks the same receipt until the source is ready instead of submitting the URL again.
  </Step>
</Steps>

## Verify

Ask the agent to quote one specific passage from the source. A source title
proves that the item is listed; a direct quote proves that its contents are
available.

## Troubleshooting

* **The page requires a login:** paste the content or upload a file; Runtime cannot fetch a private page through its public URL.
* **The receipt still says processing:** keep checking the same receipt.
* **The file requires upload:** complete the signed upload step, then give the returned storage path to the agent.
* **The source went to the wrong project:** switch to the correct project and add it again. Changing projects does not move the first copy.

<Accordion title="Tool trace">
  ```text theme={null}
  penumbra_status
  → penumbra_add_source
  → penumbra_add_source({ receipt }) when processing continues
  → penumbra_source_rag or penumbra_omnisearch
  ```
</Accordion>

<Card title="Extract the source" icon="wand-magic-sparkles" href="/runtime/extract-source">
  Turn the saved material into records and relationships through a Shape.
</Card>
