# Persona.ai ## Docs - [Call an MCP tool (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/call-an-mcp-tool-owner-only.md) - [Create a Knowledge Base (Project-owned or ExternalUser-owned)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/create-a-knowledge-base-project-owned-or-externaluser-owned.md): Which kind gets created depends on the credential's asserted identity. providerId is REQUIRED here (unlike the Persona route, which can auto-resolve the caller's default Provider) — no equivalent "default Provider" concept exists for a Project or ExternalUser yet. - [Create a Provider (Project-owned)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/create-a-provider-project-owned.md): Provider ownership is narrower than other Developer resources — PersonaUser/Project only, never ExternalUser. - [Create a Skill (Project-owned or ExternalUser-owned)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/create-a-skill-project-owned-or-externaluser-owned.md): Which kind gets created depends on the credential's asserted identity, same as Developer Agent creation. - [Create a Thread for the asserted external user](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/create-a-thread-for-the-asserted-external-user.md) - [Create an Agent (Project-owned or ExternalUser-owned)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/create-an-agent-project-owned-or-externaluser-owned.md): Which kind of Agent gets created depends on the credential's asserted identity: a bare Project credential creates a Project-owned Agent; pairing it with x-persona-external-user-id creates an Agent owned by that external user. - [Create an MCP server (Project-owned or ExternalUser-owned)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/create-an-mcp-server-project-owned-or-externaluser-owned.md): Which kind gets created depends on the credential's asserted identity, same as Developer Agent creation. - [Delete a file (Subject only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/delete-a-file-subject-only.md) - [Delete a Knowledge Base (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/delete-a-knowledge-base-owner-only.md) - [Delete a Provider (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/delete-a-provider-owner-only.md) - [Delete a single document from a Knowledge Base (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/delete-a-single-document-from-a-knowledge-base-owner-only.md) - [Delete a Skill (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/delete-a-skill-owner-only.md) - [Delete a Thread (Subject only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/delete-a-thread-subject-only.md) - [Delete an MCP server (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/delete-an-mcp-server-owner-only.md) - [Delete (soft-delete) an Agent (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/delete-soft-delete-an-agent-owner-only.md) - [Developer AG-UI protocol information](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/developer-ag-ui-protocol-information.md) - [Disconnect the calling Subject's own per-user connection](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/disconnect-the-calling-subjects-own-per-user-connection.md) - [Disconnect the owner-mode connection (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/disconnect-the-owner-mode-connection-owner-only.md) - [Discover Agents](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/discover-agents.md): Results are always scoped to your own Domain — never leaked across Projects. For a bare Project credential (ProjectMachineContext/ ProjectAdminContext): every Agent in this Project's own Domain, any owner type — "Project discovery". For a credential paired with x-persona-external-user-id (ProjectRun… - [Discover Knowledge Bases](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/discover-knowledge-bases.md): A genuinely separate code path — Knowledge has no Persona marketplace-browse feature to accidentally reuse. For a bare Project credential: every Knowledge Base in this Project's own Domain, any owner type. For a credential paired with x-persona-external-user-id: scope=mine returns only that external… - [Discover MCP servers](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/discover-mcp-servers.md): A genuinely separate code path from any Persona listing. Mcp has no isPublic/visibility field, so unlike Agent/Skill/Knowledge there is no separate "public browse" subset — a bare Project credential OR a ProjectRuntimeContext without scope=mine both see every MCP in this Project's own Domain, any ow… - [Discover Skills](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/discover-skills.md): A genuinely separate code path from Persona's marketplace search. For a bare Project credential (ProjectMachineContext/ ProjectAdminContext): every Skill in this Project's own Domain, any owner type. For a credential paired with x-persona-external-user-id (ProjectRuntimeContext): scope=mine returns… - [Download a file (mediated access — Subject only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/download-a-file-mediated-access-—-subject-only.md): Never a bare static URL — the requester's own (domain, externalUserId) must match the file's, or this existence-hides to the same 404 as a nonexistent file. - [Get a Knowledge Base](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/get-a-knowledge-base.md) - [Get a Provider](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/get-a-provider.md) - [Get a Skill](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/get-a-skill.md) - [Get a Thread](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/get-a-thread.md) - [Get a Thread's message history](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/get-a-threads-message-history.md) - [Get an Agent](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/get-an-agent.md): Same visibility rules as Persona (public/unlisted visible in-Domain, private only to the owner). The owner sees full details; non-owners never see systemPrompt/providerId. - [Get an MCP server](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/get-an-mcp-server.md) - [Get the calling Subject's own per-user connection status](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/get-the-calling-subjects-own-per-user-connection-status.md) - [List a Knowledge Base's source documents (owner or public)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/list-a-knowledge-bases-source-documents-owner-or-public.md) - [List a Provider's available models (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/list-a-providers-available-models-owner-only.md) - [List the asserted external user's own Threads](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/list-the-asserted-external-users-own-threads.md) - [List the asserted external user's own uploaded files](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/list-the-asserted-external-users-own-uploaded-files.md) - [Read an MCP resource (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/read-an-mcp-resource-owner-only.md) - [Resolve the current Project principal context](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/resolve-the-current-project-principal-context.md): Authenticates a Project credential (Authorization Bearer ., optionally with x-persona-external-user-id) and returns the resolved ProjectMachineContext or ProjectRuntimeContext. No side effects beyond external-user JIT resolution already performed by the auth middleware itself. - [Run an Agent as an external user, streaming AG-UI events (SSE)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/run-an-agent-as-an-external-user-streaming-ag-ui-events-sse.md): Requires a ProjectRuntimeContext — the credential must be paired with the x-persona-external-user-id header asserting which of the Project's own external users is running the Agent. Reuses the exact same runtime as the Persona AG-UI route. Pass x-thread-id (a Thread id from POST /api/v1/developer/th… - [Semantic search within a Knowledge Base (owner or public)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/semantic-search-within-a-knowledge-base-owner-or-public.md) - [Start the owner OAuth flow (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/start-the-owner-oauth-flow-owner-only.md): No separate Developer callback route exists — the OAuth redirect URI is a single, pre-registered URL that completes via the existing Persona callback route regardless of who initiated the flow, since the signed state alone carries the initiating context. - [Start the per-user OAuth flow (ProjectRuntimeContext only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/start-the-per-user-oauth-flow-projectruntimecontext-only.md) - [Test a Provider's credentials (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/test-a-providers-credentials-owner-only.md) - [Test an MCP server's connection (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/test-an-mcp-servers-connection-owner-only.md) - [Update a Knowledge Base (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/update-a-knowledge-base-owner-only.md) - [Update a Provider (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/update-a-provider-owner-only.md) - [Update a Skill (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/update-a-skill-owner-only.md) - [Update a Thread's title (Subject only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/update-a-threads-title-subject-only.md) - [Update an Agent (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/update-an-agent-owner-only.md) - [Update an MCP server (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/update-an-mcp-server-owner-only.md) - [Upload a file](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/upload-a-file.md): Requires a ProjectRuntimeContext. Retrieval is always mediated through GET /api/v1/developer/files/{fileId} — never a bare static URL. - [Upload documents to a Knowledge Base (owner only)](https://dev-docs.persona.hasanraiyan.me/api-reference/developer/upload-documents-to-a-knowledge-base-owner-only.md) - [Integration Guide](https://dev-docs.persona.hasanraiyan.me/guides/integration-guide.md): Where do I call this from — backend vs. frontend? - [Introduction](https://dev-docs.persona.hasanraiyan.me/introduction.md): Integrate your product with Persona's agent infrastructure. ## OpenAPI Specs - [openapi](https://dev-docs.persona.hasanraiyan.me/openapi.json)