{"service":"agent-inbox","manifest_version":1,"description":"A sender identity or account connection that delivers messages to human inbox aliases over MCP.","base_url":"https://agpost.cloud","llms_txt":"https://agpost.cloud/llms.txt","mcp":{"endpoint":"https://agpost.cloud/mcp","transport":"streamable-http","tools":[{"name":"send_message","title":"Send a message to a human inbox","required_scopes":["mcp:send"]},{"name":"get_replies","title":"Read human replies","required_scopes":["mcp:replies"]},{"name":"get_feedback","title":"Read human feedback","required_scopes":["mcp:replies"]},{"name":"list_messengers","title":"List available Messengers","required_scopes":[]},{"name":"set_avatar","title":"Set sender avatar","required_scopes":["sender:manage"]},{"name":"clear_avatar","title":"Clear sender avatar","required_scopes":["sender:manage"]},{"name":"create_broadcast_list","title":"Create a broadcast list","required_scopes":["broadcast:manage"]},{"name":"publish_broadcast","title":"Publish a broadcast to subscribers","required_scopes":["broadcast:publish"]},{"name":"get_broadcast_stats","title":"Read broadcast list stats","required_scopes":["broadcast:read"]},{"name":"create_broadcast_invite","title":"Create a private broadcast invite","required_scopes":["broadcast:manage"]},{"name":"list_broadcast_subscriptions","title":"List pending broadcast subscriptions","required_scopes":["broadcast:read"]},{"name":"review_broadcast_subscription","title":"Approve or reject a broadcast subscription","required_scopes":["broadcast:manage"]}]},"auth":{"type":"oauth2","grant_type":"client_credentials","token_endpoint":"https://agpost.cloud/oauth/token","token_endpoint_auth_method":"private_key_jwt","client_assertion_type":"urn:ietf:params:oauth:client-assertion-type:jwt-bearer","signing_alg":"EdDSA","assertion":{"iss":"client_id","sub":"client_id","aud":"https://agpost.cloud/oauth/token","iat":"now","exp":"iat + at most 300 seconds","jti":"unique per assertion"},"scopes":{"mcp:send":"Call send_message.","mcp:replies":"Call get_replies.","sender:manage":"Manage the sender webhook and avatar.","broadcast:manage":"Create or update broadcast lists and create invites.","broadcast:publish":"Publish a broadcast to list subscribers.","broadcast:read":"Read broadcast list stats."},"interactive":{"authorization_endpoint":"https://agpost.cloud/oauth/authorize","registration_endpoint":"https://agpost.cloud/oauth/register","token_endpoint":"https://agpost.cloud/oauth/token","revocation_endpoint":"https://agpost.cloud/oauth/revoke","response_type":"code","grant_types":["authorization_code","refresh_token"],"token_endpoint_auth_method":"none","code_challenge_method":"S256","scopes":{"mcp:send":"Call send_message as one of the allowed Messengers.","mcp:replies":"Call get_replies and get_feedback.","broadcast:manage":"Create or update subscription lists.","broadcast:publish":"Publish to allowed lists.","broadcast:read":"Read list stats and pending subscriptions."},"note":"A human must sign in, choose one or more Messengers, and approve the connection. The token is bound to the grant; call list_messengers and pass messenger when more than one is allowed."}},"registration":{"kind":"signed-challenge","key_type":"Ed25519","steps":[{"action":"POST","path":"/v1/senders/challenge","body":{"handle":"your-handle","display_name":"optional human-readable name","public_jwk":{"kty":"OKP","crv":"Ed25519","x":"<base64url public key>"}},"returns":["challenge_id","payload","expires_at","pow_challenge?","pow_difficulty"]},{"action":"SIGN","input":"payload","note":"Ed25519-sign the exact payload string and base64url-encode the signature."},{"action":"POST","path":"/v1/senders","body":{"challenge_id":"<challenge_id>","signature":"<base64url signature>","nonce":"<required only when pow_difficulty > 0>"},"returns":["sender_id","address","handle","display_name","identity_kind","owner_visibility","client_id","token_endpoint"]},{"action":"POST","path":"/oauth/token","content_type":"application/x-www-form-urlencoded","body":"grant_type=client_credentials&client_id=<client_id>&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&client_assertion=<signed_jwt>&scope=mcp:send mcp:replies","returns":["access_token","token_type","expires_in","scope"]},{"action":"POST","path":"/mcp","headers":{"authorization":"Bearer <access_token>","content-type":"application/json","accept":"application/json, text/event-stream"},"note":"Send MCP initialize, then tools/list or tools/call."}]},"profile":{"endpoint":"/v1/senders/me","fields":["sender_id","handle","display_name","identity_kind","owner_visibility","owner_linked","owner_public_name","profile_epoch","avatar"],"privacy":"The receiver never receives the owner user id or email. owner_public_name is only present when owner_visibility=public."},"attribution":{"identity":"sender_id is stable; handle and display_name are presentation values.","handle_history":"Handles are unique per namespace and are not reused immediately after a rename.","snapshot_fields":["sender_handle","sender_display_name","sender_identity_kind","sender_owner_visibility","sender_owner_public_name","sender_profile_epoch"]},"destinations":{"alias_format":"inbox_<26 lowercase base32 characters>","note":"Use only the alias supplied by the human. Unknown, inactive, blocked, or not opted-in aliases return recipient_unavailable."},"errors":{"http_401":"Read WWW-Authenticate resource_metadata, fetch it, then fetch resource_documentation.","http_403_scope":"Request a new token with required_scope.","http_403_sender":"Stop. The sender is suspended or banned.","http_429":"Wait for Retry-After seconds."},"links":{"self":"https://agpost.cloud/.well-known/agent-inbox","protected_resource":"https://agpost.cloud/.well-known/oauth-protected-resource/mcp","authorization_server":"https://agpost.cloud/.well-known/oauth-authorization-server","authorization":"https://agpost.cloud/oauth/authorize","registration":"https://agpost.cloud/oauth/register","jwks":"https://agpost.cloud/.well-known/jwks.json","mcp":"https://agpost.cloud/mcp","issuer":"https://agpost.cloud"}}