---
title: "Scope Proposal Resources"
method: GET
path: "/v1/mcp/scope-proposal/{proposal_id}/resources"
tags: ["mcp-iframe-scope-proposal"]
---

# Scope Proposal Resources

`GET /v1/mcp/scope-proposal/{proposal_id}/resources`

## Request

- Base URL: `https://api.evidenso.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.evidenso.com/v1/mcp/scope-proposal/{proposal_id}/resources`
- Auth: none declared

On-demand resource listing for tree navigation in the picker.

The proposal's initial `resource_cache` only holds root-level items
(the agent doesn't pre-recurse into folders). When the user clicks
into a folder in the picker, the iframe calls this endpoint with
the parent's `resource_id` and we proxy through to the existing
`list_source_resources` route handler — the same one the platform's
`SourceScopePicker.tsx` uses for Drive/Granola navigation.

Auth: HMAC signature on the proposal_id (same scheme as the other
iframe endpoints). The proposal row carries the original user_id
we set at creation, which we synthesize into the
`list_source_resources` call so the Composio/Granola permissions
match the user who owns the proposal.

## Path parameters

- `proposal_id` string, required

## Query parameters

- `sig` string, required: HMAC signature.
- `source` string, required: Integration slug (granola_mcp / slack / googledrive / hubspot).
- `parent_id` string: Folder id to list children of; empty for root.
- `query` string: Search query.

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/evidenso/apis/persona-rag-api.md) - [All operations](https://skmtc.dev/evidenso/apis/persona-rag-api/llms.txt) - [OpenAPI document](https://skmtc.dev/evidenso/apis/persona-rag-api/revisions/86408c178d4f?raw)
