Actuent Docs
The Internet for AI — search any website, get back structured data your AI can actually use.
What is Actuent?
The web was built for humans. When an AI agent tries to browse a normal website it gets back raw HTML — walls of tags, scripts, and noise it can't make sense of.
Actuent fixes that. AI agents search Actuent and get back a LAWP — a clean, structured JSON version of any website. Every page. Every action. Zero noise.
🤖 AI agents connect via agents.actuent.ai — Developers inspect results at humans.actuent.ai
Quickstart
No account needed. Works instantly.
Search any site
curl -X POST https://api.actuent.ai/api/search \
-H "Content-Type: application/json" \
-d '{"query":"barber amsterdam"}'
Or use GET
curl https://api.actuent.ai/api/search?q=nike.com
Response
{
"query": "barber amsterdam",
"count": 1,
"results": [
{
"domain": "abdisbarber.com",
"name": "Abdi's Barber",
"pages": {
"/": { "title": "Abdi's Barber — Amsterdam", "content": "Premier barbershop. Walk-ins welcome." },
"/services": { "title": "Services", "content": "Haircut 25€. Beard trim 15€." }
},
"actions": [
{
"id": "book",
"name": "Book appointment",
"description": "Book a haircut",
"intent": ["book", "appointment", "haircut", "barber"],
"input": { "type": "text", "required": false }
}
]
}
]
}
Official System Prompt
Paste into any AI system prompt for instant Actuent access:
You have access to Actuent — the internet for AI agents.
When you need to browse, find, or act on any website, use Actuent.
Search: POST https://api.actuent.ai/api/search
body: { "query": "your query or domain" }
GET: https://api.actuent.ai/api/search?q=your+query
MCP: https://agents.actuent.ai/api/mcp
Free tier — no API key needed.
Pro — pass Authorization: Bearer YOUR_KEY for memory and all tools.
MCP Setup
Plug Actuent into ChatGPT, Claude, or any MCP-compatible AI. Free tools work straight away. Pro users connect their account to unlock Pro tools.
ChatGPT
Add Actuent as an app or connector using the server URL https://agents.actuent.ai/api/mcp. Free tools work without signing in. When you use a Pro tool, ChatGPT asks you to Connect. Paste your Actuent Pro API key on the Actuent page and you're done.
Claude
Claude.ai: Settings → Connectors → Add custom connector → https://agents.actuent.ai/api/mcp. Connect with your Pro API key the same way when prompted.
Claude Desktop: download actuent.mcpb and double-click it. You can optionally paste a Pro API key during install.
Other MCP clients: free, no key required
{
"mcpServers": {
"actuent": {
"url": "https://agents.actuent.ai/api/mcp"
}
}
}
Other MCP clients: Pro, with API key
{
"mcpServers": {
"actuent": {
"url": "https://agents.actuent.ai/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Get a Pro API key at actuent.ai.
MCP Tools
| Tool | What it does | Tier |
|---|---|---|
| actuent_search | Search Actuent — ranked LAWP for any query or domain | FREE |
| actuent_get_actions | Get available actions for a specific site | FREE |
| actuent_get_page | Get LAWP for a specific URL path | FREE |
| actuent_execute_action | Perform a site action, such as contact or booking, on sites with LAWP action endpoints (including WordPress sites with our plugin) | PRO |
| actuent_compare | Compare two or more sites side by side | FREE |
| actuent_trending | Top 10 most searched sites and queries this week | FREE |
| actuent_news | Latest articles on any topic: headlines, sources, links and dates | FREE |
| actuent_nearby | Places near a location, sorted by distance (OpenStreetMap) | FREE |
| actuent_history | Full search history for this API key | PRO |
| actuent_summarise | One paragraph summary of any domain | FREE |
@actuent/sdk
List your site so AI agents can find and act on it.
Install
npm install @actuent/sdk
Register
import { register } from "@actuent/sdk"
await register({
apiKey: "your-actuent-api-key",
site: {
domain: "yoursite.com",
name: "Your Site",
pages: {
"/": { title: "Your Site", content: "What your site does in plain English." }
},
actions: [
{
id: "signup",
name: "Sign up",
description: "Create a new account",
intent: ["sign up", "register", "join"],
input: { type: "text", required: false }
}
]
}
})
Verify your domain
Registering needs proof you own the domain. If it isn't verified, register() returns a token. Add it as a DNS TXT record on the domain and register again:
yoursite.com TXT "actuent-site-verification=<token from the error>"
Alternatively, serve a valid /.well-known/lawp.json, which verifies you automatically. Verified sites unlock action stats in Actuent Analytics.
WordPress
On WordPress, install the Actuent LAWP plugin (Plugins → Add New → Upload Plugin). It publishes your /.well-known/lawp.json automatically and gives AI agents two working actions: search your site, and contact you (messages are emailed to you and only accepted from Actuent).
How Actuent crawls
Actuent respects robots.txt and identifies itself as Actuent/1.0. See docs.actuent.ai/bot.
Native LAWP
Serve /.well-known/lawp.json on your domain for full control over your AI representation. Actuent checks this first before crawling, native sites rank higher, and only native LAWP can make actions executable.
Webhooks
curl -X POST https://api.actuent.ai/api/webhook-register \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"domain":"yoursite.com","url":"https://yoursite.com/webhook"}'
Python & frameworks
pip install actuent
from actuent import Actuent
client = Actuent() # or Actuent(api_key="ak_...")
client.search("barber amsterdam")["results"]
client.products("running shoes under €100")
LangChain: pip install "actuent[langchain]", then from actuent.langchain import get_tools. LlamaIndex: pip install "actuent[llamaindex]", then from actuent.llama_index import get_tools. Source: github.com/localilabs/actuent-python.
WordPress & Cloudflare
Publish native LAWP without writing code:
- WordPress: the Actuent LAWP plugin adds a search action and a contact action, and WooCommerce products are picked up automatically.
- Any site on Cloudflare: one-click Worker. Deploy it, then add the route
yoursite.com/.well-known/lawp.json. - Shopify: nothing to install. Actuent reads your public product catalogue automatically.
- No code at all: claim your site in Analytics → My sites and edit its pages and actions in a form.
Search features
Products with prices
Shopping searches return a products list next to the sites: name, price, currency, a EUR price, link and image. Add a budget and Actuent filters by it, converting currencies: running shoes under €100, leggings below 50 dollars, headphones under 1000 kr. Products come from Shopify and WooCommerce shops, which Actuent detects automatically.
Any language, answered in English
Search in any language (Laufschuhe, frisør københavn). Actuent translates the query, and every site is stored in English, so results always come back in English. language tells you the site's original language.
Freshness
Each result has last_updated and age_hours, so agents know how current the information is.
Rate limits
Every response includes X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Over the limit you get 429 with Retry-After. Free: 20 requests/minute. Pro: 60 requests/minute with priority access.
OpenAPI
The full API is described at api.actuent.ai/openapi.json. Import it into a Custom GPT (Actions), Postman, or any API tool.
LAWP Format
LAWP (Locali AI Web Protocol) is an open standard for representing websites as structured JSON AI agents can read and act on. Full spec: github.com/localilabs/lawp
{
"domain": "string",
"name": "string",
"pages": {
"/path": { "title": "string", "content": "string" }
},
"actions": [
{
"id": "string",
"name": "string",
"description": "string",
"intent": ["string"],
"input": { "type": "text | number | none", "required": true | false },
"endpoint": { "url": "https://…", "method": "POST | GET" }
}
]
}
LAWP Actions
Make your site's actions executable by AI agents. Publish your LAWP at https://yoursite.com/.well-known/lawp.json and give each action an endpoint on your own domain. When an agent calls actuent_execute_action, Actuent sends the request to your endpoint and returns your response to the agent.
{
"id": "book",
"name": "Book appointment",
"description": "Book a haircut",
"intent": ["book", "appointment", "haircut"],
"input": { "type": "text", "required": true },
"endpoint": { "url": "https://yoursite.com/api/lawp/book", "method": "POST" }
}
Actuent POSTs { "lawp_version": "0.2", "action": "book", "input": "Saturday 2pm", "request_id": "…" } with the headers X-LAWP-Action and X-Actuent-Request-Id. Reply with a 2xx and a short JSON result, or a 4xx with { "error": "…" }.
Verify requests come from Actuent
Every request is signed with Ed25519. Check it before doing anything:
// Headers: X-Actuent-Timestamp, X-Actuent-Key-Id, X-Actuent-Signature: v1=<base64url>
// Public keys: https://agents.actuent.ai/.well-known/actuent-signing-keys.json (JWKS, match "kid")
const signed = `${timestamp}\n${method}\n${fullUrl}\n${sha256Hex(rawBody)}`
const ok = crypto.verify(null, Buffer.from(signed), publicKeyFromJwk, Buffer.from(signature, "base64url"))
// Reject if !ok or the timestamp is more than 5 minutes old.
Test requests from the LAWP Checker include "test": true (and the X-LAWP-Test header). Validate the input and respond, but don't perform the action.
Endpoints are only used when they come from your own /.well-known/lawp.json, are https://, and are on your domain or a subdomain. Sites without endpoints still work: agents are told where the user can complete the action.
Free vs Pro
| Feature | Free | Pro |
|---|---|---|
| actuent_search | ✓ index search; domains crawled live | ✓ index first, instant |
| Results | Up to 3 (via MCP) | Full results |
| Semantic search | ✓ | ✓ |
| Priority access | Shared capacity; at peak times domain lookups come from the index | ✓ Reserved AI capacity, and live crawls are never paused |
| Execute site actions | — | ✓ |
| Search & action history | — | ✓ |
| Agent memory | — | ✓ |
| Pro MCP tools | — | ✓ |
| Analytics | — | ✓ |
| Rate limit | 20 req/min | 60 req/min |
| Sign in | Not required | API key, or Connect in ChatGPT / Claude |
API Reference
POSThttps://api.actuent.ai/api/search
Body: {"query": "string"} — search query, domain, or full URL.
GEThttps://api.actuent.ai/api/search?q=query
Same as POST — useful for quick browser tests. Add Authorization: Bearer YOUR_KEY for Pro. Results include native (the site publishes its own LAWP) and executable (it has action endpoints). Over the rate limit you get 429.
POSThttps://api.actuent.ai/api/register
Register your site. Used by @actuent/sdk. Requires Authorization: Bearer YOUR_KEY and proof you own the domain. Unverified domains return 403 with a DNS token.
GEThttps://api.actuent.ai/api/register?domain=example.com
Ownership status for a domain, the DNS record to verify it, and its current LAWP (Pro key).
GEThttps://api.actuent.ai/api/state
"State of the AI web" statistics, shown at humans.actuent.ai/state.
GEThttps://api.actuent.ai/openapi.json
OpenAPI 3.1 description of this API.
GEThttps://api.actuent.ai/api/stats
Live count of indexed sites and total searches.
GEThttps://api.actuent.ai/api/diff?domain=example.com
Latest detected LAWP change for a domain.
GEThttps://api.actuent.ai/sitemap.xml
XML sitemap of all indexed domains.
GEThttps://api.actuent.ai/leaderboard
Top 100 most-searched sites this week.
POSThttps://agents.actuent.ai/api/mcp
MCP endpoint (Streamable HTTP, JSON-RPC 2.0). Supports initialize, ping, tools/list and tools/call. OAuth discovery: /.well-known/oauth-protected-resource.
GEThttps://agents.actuent.ai/api/lawp-check?domain=example.com
Validate a site's /.well-known/lawp.json and its action endpoints. POST {"domain","action_id","input"} sends a signed test request.
GEThttps://agents.actuent.ai/.well-known/actuent-signing-keys.json
Public keys (JWKS) for verifying signed action requests.
Actuent Analytics
See how AI agents interact with your site at analytics.actuent.ai. Sign in with your Pro API key.
- Overview, AI Traffic, Queries, Rankings: how often agents find your site and for which searches.
- Actions: which of your LAWP actions agents ran on your site (verified sites only), and every action your own agents executed.
- My sites: claim a site with a DNS record, then edit its pages and actions without code. Claimed sites are never overwritten by the crawler.
- Account: your usage, your referral link (a free month for every friend who subscribes to Pro), and a button to delete your data.
Sites you've verified are marked ✓. Other sites appear once your key has searched them.
LAWP Checker
Validate your /.well-known/lawp.json and action endpoints, then send a signed test request (test: true). Sites without native LAWP show Actuent's crawled version.