Python SDK for the Manifest API — structured action manifests for AI agents
Project description
manifest-api
Stop guessing selectors. Manifest tells your agent what's clickable, fillable, and submittable on any page.
Python SDK for the Manifest API — extracts structured action manifests from web pages so AI agents know what they can do, not just what's on screen.
| Raw browser access | Content extraction | Manifest | |
|---|---|---|---|
| Gives agents a browser | ✓ | ✗ | ✓ |
| Returns page content | ✓ | ✓ | ✓ |
| Returns available actions | ✗ | ✗ | ✓ |
| Required fields, input types | ✗ | ✗ | ✓ |
| Survives UI redesigns | ✗ | ✓ | ✓ |
Install
pip install manifest-api
Quickstart
Sync
from manifest_api import ManifestClient
client = ManifestClient(api_key="your-key") # or set MANIFEST_API_KEY env var
manifest = client.get("https://example.com")
print(manifest.current_page_state)
print(manifest.actions)
# Convenience helpers
action = manifest.action("submit-form")
inputs = manifest.actions_of_type("input")
required = manifest.required_actions
Async
import asyncio
from manifest_api import AsyncManifestClient
async def main():
async with AsyncManifestClient(api_key="your-key") as client:
manifest = await client.get("https://example.com")
print(manifest.current_page_state)
asyncio.run(main())
LangChain
pip install "manifest-api[langchain]"
from manifest_api.integrations.langchain import create_manifest_tool
tool = create_manifest_tool() # reads MANIFEST_API_KEY from env
# or: create_manifest_tool(api_key="...")
# use with an agent, e.g.:
from langchain.agents import create_agent
agent = create_agent(model=..., tools=[tool])
create_manifest_tool wraps AsyncManifestClient as a get_manifest(url) StructuredTool — the API key is bound at creation time, so the LLM never sees it.
All methods
# Both ManifestClient and AsyncManifestClient expose:
manifest = client.get("https://example.com") # POST /manifest → Manifest
health = client.health() # GET /health → dict
valid = client.session_valid() # GET /session-status → bool
Manifest helpers
manifest.action("id") # → Action | None
manifest.actions_of_type("input") # → list[Action]
manifest.required_actions # → list[Action]
manifest.blocked_actions([...]) # → list[Action], see "Action dependencies" below
Action dependencies
Some actions are disabled until others are completed (e.g. a submit button
gated on required fields). Action.requires lists the ids of actions that
must be completed first; blocked_actions() filters a manifest down to
actions not yet unblocked by a given set of completed ids:
completed = ["email-input"]
still_blocked = manifest.blocked_actions(completed) # actions still waiting on something
requires is inferred by the LLM translation step from DOM signals (disabled
attributes, aria-disabled, form field proximity) — it's best-effort, not a
guaranteed-accurate dependency graph, and won't capture custom JS validation
logic.
Action types
button · input · textarea · select · checkbox · radio · other
Error handling
from manifest_api import AuthenticationError, RateLimitError, APIError
try:
manifest = client.get("https://example.com")
except AuthenticationError:
print("Check your API key")
except RateLimitError:
print("Slow down — rate limit hit")
except APIError as e:
print(f"Server error {e.status_code}")
Docs
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file manifest_api-0.1.3.tar.gz.
File metadata
- Download URL: manifest_api-0.1.3.tar.gz
- Upload date:
- Size: 19.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9fc7c4daad04a4f87eb6327bd7829c1007aef79167ed3ec90e3c09ce1f2ee7a3
|
|
| MD5 |
c2d496c6e143fc953347eb3fa1d98a9a
|
|
| BLAKE2b-256 |
e2a499c19515a3f122c83df847aed88d2d98219b366cb82f62d524b39df08c8f
|
File details
Details for the file manifest_api-0.1.3-py3-none-any.whl.
File metadata
- Download URL: manifest_api-0.1.3-py3-none-any.whl
- Upload date:
- Size: 6.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
512d38341de0c469162bc83558626abc05aec870058b1132ac492f51d9b105d2
|
|
| MD5 |
44a132140451e334215295c113490c14
|
|
| BLAKE2b-256 |
de46587ef14f6aea253cf5c3be931e305b00a8393efe1fe68f08d38afed3246c
|