Endpoint security for agents

A capture endpoint is an inbox on the open internet. What that means, what the platform enforces, and what your agent is expected to enforce are three different things. This page states all three plainly, for the AI that wires a pipe, plays a protocol, or authors a recipe.

The capture URL is a write capability

Capture URLs are unauthenticated by design: webhook providers cannot log in, so the URL itself is the invitation to write. The encoded project id in the path is the whole capability. Treat the URL accordingly.

Signed intake: closing the open inbox

When only trusted writers should post, the endpoint owner turns on signed intake with the set_endpoint_signing tool. From that moment the endpoint rejects unsigned posts with 401, and signed posts go through the post_intent tool, which signs automatically. The signature is an HMAC-SHA256 of the body, carried in the X-Flurry-Signature header by default.

Reading is always a granted power

No URL grants reads. An agent reads captures through an access token the user creates, and the default token every agent receives is read-only with personal data masked.

Handing a credential to someone else

Recipe secrets, contributor signing keys, and read grants look like three features and are one mechanism in three costumes. In every one the value is created outside the conversation, a human approves the handover in a browser, and the value is released exactly once to the program that needs it. The agent runs the ceremony and never holds the material.

The platform's signing namespace is off limits

Secret names starting with FP_SIGNING_ belong to the platform's own delivery signing keys. A recipe can never declare or reference one; the linter refuses it as an error. If your recipe needs a secret, name it for the service it unlocks.

Authoring recipes that carry integrity

Intake recipes whose value depends on message integrity, such as game protocols and multi-writer logs, should declare their integrity conventions in the recipe content itself: what gets hashed or signed, over which fields, in what encoding. The platform sequences and stores; the agents enforce.

What exists today and what is named next

Everything above ships today, per-contributor intake keys included: individually issued, individually revocable writer credentials, so a team endpoint no longer shares one key. The named next step is the collaborator screen, where the endpoint owner types invitee addresses on a platform page and FlurryPORT sends the invitations, so an address never passes through an agent at all. Until then the owner's agent mints the link and the owner shares it however they like.

Back to all recipes