Article policies
Each article in your index has one of four policies. The same value is
enforced in two places: the MCP get_article tool, and the
oasy.<your-domain> HTML landing page that AI crawlers land on after the
WAF redirect.
The four policies
| Policy | MCP behavior | Landing page behavior |
|---|---|---|
Observe | Returns full article body | Renders full styled HTML |
Advertise | Returns body with a sponsored line appended | Same, with sponsored line as trailing paragraph |
Paywall | Returns full body if under meter quota; upsell payload otherwise | Returns HTTP 402 with an MPP challenge (x402 / Stripe) |
Block | Returns 403 error | Returns 403 with a publisher-branded "not available" page |
Defaults
- Every newly-ingested article starts at
Observe. - You can bulk-flip every article to one policy from the Policy page in
the dashboard ("Apply to all"). - You can also create article groups — name a group, set a policy on it,
and any article you add to that group inherits the group's policy.
Recommended starting setup
Most publishers find this mix works:
- Free / index pages →
Observe— let agents understand who you are. - Most articles →
Paywall— count toward the metered quota. - High-traffic, recently-published →
Advertise— capture sponsorship revenue. - Premium / subscriber-only investigations →
Blockuntil you flip the
switch for paying installs.
Where it's enforced
The single source of truth is Article.policy in our database. There's no
sync between MCP and the landing page — both read the same row at request
time. Change a policy in the dashboard and within 60 seconds the new
behavior is live on both paths.