The internet, readable by agents.

Manifest turns any URL into a structured map of what an AI agent can actually do on that page — not just what's written on it.

The problem

Give an AI agent a browser, and it can see a webpage. Give it a scraper, and it can read one. Neither tells it what it's allowed to do there.

Today, agents either take a screenshot and guess, or a developer hand-writes selectors that break the next time the page ships a redesign. There's no layer that tells an agent: here are the actions on this page, here's what each one needs, here's what's required.

That's the gap Manifest fills.

How it works

Manifest visits a URL, reads its accessibility tree the same way a screen reader would, and cross-references it against the page's actual DOM for the details accessibility trees miss — required fields, input types, placeholders, disabled states. That combined picture is translated into a clean JSON action manifest: every button, form, and input on the page, described in terms an agent can reason about and act on.

Manifest visits a URL, reads its accessibility tree the same way a screen reader would, and cross-references it against the page's actual DOM for the details accessibility trees miss — required fields, input types, placeholders, disabled states. That combined picture is translated into a clean JSON action manifest: every button, form, and input on the page, described in terms an agent can reason about and act on.

URL → accessibility tree → DOM extractors → structured JSON manifest

URL → accessibility tree → DOM extractors → structured JSON manifest

No screenshots. No hand-maintained selectors. No fragile CSS paths that snap the moment a page redesigns.

No screenshots. No hand-maintained selectors. No fragile CSS paths that snap the moment a page redesigns.

What you get back

POST /manifest

{ "url": "https://example.com" }

{

"url": "https://example.com",

"current_page_state": "Contact page with a message form",

"actions": [

{

"id": "submit-form",

"label": "Submit",

"type": "button",

"description": "Submits the contact form",

"required": false

},

{

"id": "email-input",

"label": "Email",

"type": "input",

"description": "Email address field",

"required": true

}

],

"navigation": [

{ "label": "Home", "url": "/" }

]

}

Why not just use a browser tool or a scraper?

Browser access

Content extraction

Manifest

Gives an agent a browser

Returns page content

Returns available actions

Agent can reason about the output

Partially

Survives UI redesigns

Required fields & input types

Browser tools get an agent onto the page. Content tools get it the text. Manifest is the layer that tells it what to click, fill, and submit — and what's mandatory before it can move on.

Browser tools get an agent onto the page. Content tools get it the text. Manifest is the layer that tells it what to click, fill, and submit — and what's mandatory before it can move on.

Pricing

Plan

Price

Calls/ Month

Overage

Free

$0

50

Starter

$29/ mo

1,000

$0.08/ call

Pro

$79/ mo

5,000

$0.05/ call

Enterprice

Custom

Custom

Custom

Cached responses are always fast and never count against your rate limit the same way a cold request does — most agents hit the same handful of URLs repeatedly, so cache hits keep costs predictable.

omfang logo

Follow us on social media

Contact us

Learn more about omfang

omfang logo

Follow us on social media

Contact us

Learn more about omfang