server/context/glossary.ts, adds the handler to your server’s context map, adds the
ai:skills scope, and gives the manifest a server block if it has none.
The manifest entry
tappify.extension.json instead — the
$schema line gives your editor completion and validation, and
tappify extension doctor checks the result.
description is 10 to 300 characters and finishes the line the assistant reads above your
summary: Context from Funnel Lab (what our funnel stages mean):. Write it as a noun phrase, in
lower case, with no full stop; the label line carries the first 300 characters of it and counts
towards the block’s 2 KB.
when decides how often you are asked:
A turn that carries a mention runs both sets, and a provider that declares both phases still
answers once. Use
turn_start for something short that is true all the time, and mention for
anything that depends on which object the owner picked.
The handler
GET /tappify/context/glossary under your server.baseUrl with the install’s
token. It is a GET, so it carries no body: no input, no credentials and no stored documents reach
this route. Anything that needs those belongs in a tool, which the assistant calls with the whole
call body.
Answer with { summary, data? }. summary is prose the assistant can quote as it stands;
data is the numbers behind it. Anything else is refused and the block is dropped.
The 2 KB cap
The whole block — the label line, your summary and your serialiseddata — is capped at 2 KB.
Over the cap Tappify drops data first, and only then trims summary, at a word boundary. Write
the summary so the first sentence is the one that matters.
When your server is slow or down
A context provider runs before the assistant starts answering, so the owner waits for it. You have 3 seconds — the health-check budget, not the 30 a tool call gets. Past that, or on any failure, Tappify drops the block. The owner is not shown an error and the turn carries on without your context. The call is recorded against the install as acontext_call with an error outcome:
your Runtime page counts those calls by type over the last thirty days, and the owner sees the
failed one in their install’s recent activity.
A provider that fails is then left alone for a minute: the next turns skip it without calling
you, so a server having a bad minute is asked once, not once a turn. Anything you cannot compute
in 3 seconds belongs behind cache, or in a tool the assistant calls when it actually needs it.
Limits
Three context providers per extension, each block at most 2 KB, each call answered within 3 seconds.cache accepts 1m, 5m or 1h, and Tappify keys the cache on the install and the
provider, so one workspace’s block never reaches another’s. The owner who asked is not part of
that key, so don’t personalise a cached block by claims.userId — the three owners of one
install share the window. Skills, prompts and context providers all sit behind the same
ai:skills scope, so declaring your first one asks the owner for it once.