Actuent
DOCS v0.3

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

ToolWhat it doesTier
actuent_searchSearch Actuent — ranked LAWP for any query or domainFREE
actuent_get_actionsGet available actions for a specific siteFREE
actuent_get_pageGet LAWP for a specific URL pathFREE
actuent_execute_actionPerform a site action, such as contact or booking, on sites with LAWP action endpoints (including WordPress sites with our plugin)PRO
actuent_compareCompare two or more sites side by sideFREE
actuent_trendingTop 10 most searched sites and queries this weekFREE
actuent_newsLatest articles on any topic: headlines, sources, links and datesFREE
actuent_nearbyPlaces near a location, sorted by distance (OpenStreetMap)FREE
actuent_historyFull search history for this API keyPRO
actuent_summariseOne paragraph summary of any domainFREE

@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:

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

FeatureFreePro
actuent_search✓ index search; domains crawled live✓ index first, instant
ResultsUp to 3 (via MCP)Full results
Semantic search✓✓
Priority accessShared 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 limit20 req/min60 req/min
Sign inNot requiredAPI 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.

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.