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 | Execute a site action (sites with LAWP action endpoints) | 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 | Structured news from BBC, Guardian, NYT, TechCrunch, Wired | FREE |
| actuent_nearby | Physical places near the user relevant to their query | 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"}'
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/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.
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.