メインコンテンツへスキップ

ARC developer documentation

Endpoints

Every path an agent uses, the method it takes, whether it needs a credential, and which component serves it.

All paths below are relative to a blocklet host. Replace <host> with that host.

Data plane

PathMethodCredentialNotes
/mcpPOSTOptionalMCP over streamable HTTP. Stateless: no mcp-session-id is issued, and initialize is not required before other methods
/api/afs/rpcPOSTOptionalAFS operations for clients that do not speak MCP

Anonymous requests to /mcp may use the handshake methods, the list methods, and the read tools. Anything else returns 401 with a WWW-Authenticate header naming the protected-resource document.

Discovery

All four are GET and none requires a credential.

PathServes
/.well-known/mcp.jsonServer card: name, URL, transport, authentication summary, tool split
/.well-known/mcpSame document
/.well-known/mcp/server-card.jsonSame document
/.well-known/oauth-protected-resourceRFC 9728 protected-resource metadata
/.well-known/oauth-authorization-serverRFC 8414 authorization server metadata
/.well-known/api-catalogRFC 9727 linkset naming the service descriptions on this host

The three server-card paths are aliases for one document. Use whichever your client already looks for.

Authorization

These paths are named by the authorization server metadata and served by the connect service running behind the same host. To an agent they are ordinary paths on the blocklet host.

PathMethodCredentialPurpose
/.well-known/service/oauth/registerPOSTNoneDynamic client registration. Returns a client_id and echoes the registration
/.well-known/service/oauth/authorizeGET, POSTUser sessionAuthorization request and consent
/.well-known/service/oauth/tokenPOSTPKCE verifierToken exchange and refresh
/.well-known/service/oauth/device_authorizationPOSTNoneDevice flow, for clients that cannot open a browser
/.well-known/service/gen-access-keyGETUser sessionBrowser page that completes an authorization in a user's session

Grant types advertised: authorization_code, refresh_token, and the device code grant. PKCE method: S256. Token endpoint authentication: none.

Response shapes

RequestResult
POST /mcp tools/list, anonymous, no initialize200; eight tools, or eleven when the blocklet declares content collections
POST /mcp tools/call afs_write, anonymous401, body {"error":"Unauthorized"}, header www-authenticate: Bearer resource_metadata="https://<host>/.well-known/oauth-protected-resource"
GET /.well-known/oauth-protected-resource200; resource is https://<host>/mcp, authorization_servers is ["https://<host>"]
GET /.well-known/oauth-authorization-server200; issuer equals the host
POST /.well-known/service/oauth/register201; client_id plus the echoed registration fields
POST /.well-known/service/oauth/device_authorization200; device_code, user_code, verification_uri, verification_uri_complete, expires_in: 300, interval: 5
POST /.well-known/service/oauth/token (device grant, approved)200; {"access_token":"blocklet-…","token_type":"Bearer","scope":"mcp"}, with no expires_in and no refresh_token
POST /mcp tools/call afs_write, owner credential, undeclared path200 with isError and AFS_FORBIDDEN

For every failure shape and how to tell them apart, see Errors.

Text surfaces

PathMethodCredentialServes
/llms.txtGETNonePointer document naming the agent surfaces, plus a section per collection
/llms-<collection>.txtGETNoneIndex for one collection. 404 when the collection declared no llms face
/llms-<collection>-full.txtGETNoneFull text for one collection
/llms-full.txtGETNoneFull text for every collection

See llms.txt.

Compatibility path

PathNotes
arc mcpBridges stdio to a running local daemon, for clients that cannot use HTTP. See arc mcp