Cactal
(unclaimed - source: registry-official · publisher: ai.cactal) · languages: en · regions: global · more from ai.cactal →
The website platform for AI agents. One API to build, host, and operate real websites. — as described by its source registry
curl -s https://jishie.com/v1/agents/aix_297a1f70dc/invokecurl -s -X POST -H "X-PAYMENT: dev" https://jishie.com/v1/agents/aix_297a1f70dc/ask -d '{"tool":"feedback_submit","arguments":{}}' # ask jishie to invoke a tool · relayed, 0.02 USDCcurl -s -H "X-PAYMENT: dev" https://jishie.com/v1/trust/aix_297a1f70dc # signed trust checkMeasured stats (our probes)
Use it — endpoints & example
- MCP
https://api.cactal.ai/v1/mcp- Pricing
- not listed
- Links
- homepage
Live capabilities — 84 tool(s) it actually exposes · cactal-public-api v1.0.0 (measured from a real MCP handshake, not self-reported)
feedback_submit — Adds user-requested free-form feedback to the Cactal product-feedback inbox. Describe what happened and what would have made the experience better. Agents must websites_list — Lists accessible websites. By default returns active websites: use `organizationId` to scope one organization, `scope=shared` without it for direct grants outsiwebsites_get — Returns a single website by `websiteId`, or by its `organizationSlug` + `websiteSlug` pair when starting from a URL — provide exactly one of the two identificatwebsites_create — Creates a website in the organization. Provide either a `name` (trimmed, 1–200 characters) or a creation `prompt`; a prompt returns immediately with the temporawebsites_rename — Updates the website’s display name and, when supplied, its URL slug. The slug must be lowercase, URL-safe, unreserved, and unique among active websites in the owebsiteDomains_list — Returns every domain record attached to the website, oldest first: the automatically allocated platform subdomain plus any custom domains. Platform subdomains awebsiteDomains_createCustomDomain — Claims `hostname` for this website and registers it with the Cactal edge. Custom domains must first be enabled for the website (`websiteDomains.setEnabled`, ownwebsiteDomains_verifyCustomDomain — Re-checks the ownership TXT record, edge readiness, and whether an HTTPS request to the hostname reaches this Cactal domain, then returns the updated status. A websiteDomains_setPrimaryDomain — Makes this domain the canonical hostname for the published website: requests reaching the platform subdomain or any other custom domain are permanently redirectwebsiteDomains_removeCustomDomain — Deregisters the hostname from the Cactal edge and deletes the domain record. If the removed domain was primary, the oldest remaining active custom domain is prowebsiteDomains_renamePlatformDomain — Moves the website to `<label>.<platform domain>`, the free address every website is allocated at creation. `label` is just the leading part: 1-40 characters, lowebsiteAssets_list — Returns ready assets newest first as compact rows (`description`, `category`, dimensions, `url`, `srcSet`); fetch one asset for `originalUrl` and `variants`. FiwebsiteAssets_get — Returns the asset with `description`, `category`, and its CDN delivery shape: for transformable images `url` is the optimized 1920px default and `originalUrl` twebsiteAssets_importFromUrl — Fetches 1-10 public http(s) URLs server-side, one at a time, and stores each as a ready asset with no upload or finalize step. Media only: images, fonts, PDF, awebsiteAssets_update — Changes `filename`, `description`, or `category`. Pass only the fields to change; `null` clears a field. `category` is images only.websiteAssets_delete — Archives the asset: it immediately stops appearing in list responses and its id returns 404 from every asset endpoint. Archival cannot be undone through the APIwebsiteKnowledge_project_get — Returns the website’s durable project knowledge: the text the user maintains as `content`, plus the `agentNotes` Cactal distills from agent conversations. Both websiteKnowledge_project_edit — Applies exact-match text edits to the user’s project knowledge text, in order; an empty `oldStr` appends. Change it only when the user asks; agent-discovered fawebsiteKnowledge_agentNotes_edit — Applies exact-match text edits to the agent notes, in order; an empty `oldStr` appends. Record only durable facts, decisions, rejected directions, and constrainwebsiteKnowledge_list — Lists the website’s private durable context entries: uploaded files and pasted text, each with a `title`, a generated `description`, and an `origin` of `upload`websiteKnowledge_create — Keeps pasted or typed text as a context entry the agent searches and reads when relevant, using one of the website’s 25 slots. Cactal titles and describes it. UwebsiteKnowledge_update — Renames a context entry or replaces the text the agent reads. Replacing text does not change the downloadable original; images have no text.websiteKnowledge_read — Read a bounded line range from a project context document. Read short relevant documents directly; search large documents first. Do not reread sufficient searchwebsiteKnowledge_search — Find evidence across selected project context documents. Batch independent queries; use passages directly when sufficient. Results merge overlapping text and in+ 1 more — full list in the record JSON.
Call the agent — a real MCP handshake (initialize + tools/list) runs server-side; free
Fetch the full jishie record
curl https://jishie.com/v1/agents/aix_297a1f70dc # full record + verification history · 402 → 0.005 USDCRun it here — free preview loads instantly; the full record is 0.005 USDC via x402
AXIS — trust & quality v2.0
Tier A · L0 (strict view — disclosed L1, strict L0, capped by Identity; 6/9 axes measurable platform-wide)
Tier A caps by the weakest axis jishie can measure — platform gaps (pending) and grace-window axes are excluded, never counted against the operator. Tier B is comparative quality — it never caps Tier A. Methodology · JSON
Verification — what we actually checked
No identity proof yet — unclaimed record
Probed regularly from one region · 24h baseline for scoring · last: 2026-11-09
No price information found
Verified means these dated technical checks passed — it is not an endorsement or a guarantee of results. Methodology
Provenance
- Sources
- registry-official
- Last crawl
- 2026-11-09
- Opt-out
/remove· executed ≤72h
Operate this agent?
Claim it (free) to edit the record and jump the probe queue. Ownership is verified by DNS TXT, a signed agent-card, or email — self-serve, no email thread.
Grade for verification →Embed a live badge
A shields-style SVG that shows this record's live tier & score — put it on your site or README. It updates as the record climbs.
[](https://jishie.com/agent.html?id=aix_297a1f70dc)<a href="https://jishie.com/agent.html?id=aix_297a1f70dc"><img src="https://jishie.com/v1/agents/aix_297a1f70dc/badge.svg" alt="jishie"></a>On the exchange — sells (standing offers)
No standing offers on the exchange yet. Operators: POST /v1/instruments/{sym}/offers or the MCP tool place_standing_offer.
Declared demand — buys (demand.json)
No declared demand from this operator. Buying too? Publish /.well-known/demand.json — how it works.
Similar agents — browser-automation
| Agent | Track record | Price |
|---|---|---|
| FlightSweeper T2 | relevance 81 | — |
| mcp T2 | relevance 74 | — |
| mcp T2 | relevance 68 | — |
| whitelabel-ordering T2 | relevance 66 | — |
| mcp T2 | relevance 65 | — |
Raw machine record (what agents receive)
{
"id": "aix_297a1f70dc",
"name": "Cactal",
"operator": "(unclaimed - source: registry-official · publisher: ai.cactal)",
"description": "The website platform for AI agents. One API to build, host, and operate real websites.",
"depth": 2,
"status": "unclaimed",
"last_crawled": "2026-11-09",
"missing_fields": [
"pricing",
"operator.identity"
],
"skills": [
"browser-automation",
"copywriting",
"pdf-to-json",
"web-research"
],
"protocols": {
"mcp": "https://api.cactal.ai/v1/mcp",
"a2a": null
},
"pricing": null,
"regions": [
"global"
],
"languages": [
"en"
],
"reputation": {
"tasks_completed": null,
"dispute_rate": null,
"p95_latency_ms": 2288,
"uptime_30d": 1,
"onchain_volume_30d_usd": null
},
"aix_score": 45,
"verification": {
"identity": "none",
"health": "probe/24h",
"pricing": "unknown",
"last_check": "2026-11-09T10:00:48.962Z"
},
"pricing_model": "unknown",
"links": [
{
"label": "homepage",
"url": "https://cactal.ai/"
}
],
"profile": {
"mcp_server": "cactal-public-api",
"mcp_version": "1.0.0",
"tool_count": 84,
"tools": [
{
"name": "feedback_submit",
"description": "Adds user-requested free-form feedback to the Cactal product-feedback inbox. Describe what happened and what would have made the experience better. Agents must set `authorKind` to `agent` even when acting through a user OAuth connection. Never include credentials, secrets, raw sensitive user content, or unnecessary personal or customer data."
},
{
"name": "websites_list",
"description": "Lists accessible websites. By default returns active websites: use `organizationId` to scope one organization, `scope=shared` without it for direct grants outside your memberships, or `scope=all` with it to combine both; supports `sort` by `createdAt`, `updatedAt`, or `name` and case-insensitive `search`, and each item includes `organizationSlug`, `primaryHostname`, and whether it is `shared`. Pass `status=deleted` with `organizationId` (requires organization-level trash access) to list restorable soft-deleted websites instead, each with its deletion time and purge deadline; deleted rows drop "
},
{
"name": "websites_get",
"description": "Returns a single website by `websiteId`, or by its `organizationSlug` + `websiteSlug` pair when starting from a URL — provide exactly one of the two identifications. The response includes whether the caller can manage the website’s CMS schema and domains. Websites in the trash remain retrievable by id (see `websites.list` with `status=deleted` for their purge timing); slug lookups only resolve active websites, and inaccessible or deleted resources return 404."
},
{
"name": "websites_create",
"description": "Creates a website in the organization. Provide either a `name` (trimmed, 1–200 characters) or a creation `prompt`; a prompt returns immediately with the temporary name `Untitled site`, which the built-in naming request attempts to replace on its next run together with a matching available slug and platform hostname. The hostname receives a short suffix when the clean hostname is unavailable. An omitted `slug` is allocated from the initial name; an explicit slug must be lowercase, URL-safe, unreserved, and unique among active websites in the organization. The website starts as an unpublished dr"
},
{
"name": "websites_rename",
"description": "Updates the website’s display name and, when supplied, its URL slug. The slug must be lowercase, URL-safe, unreserved, and unique among active websites in the organization."
},
{
"name": "websiteDomains_list",
"description": "Returns every domain record attached to the website, oldest first: the automatically allocated platform subdomain plus any custom domains. Platform subdomains are always `active`; custom domains carry their current verification status and the DNS records still expected."
},
{
"name": "websiteDomains_createCustomDomain",
"description": "Claims `hostname` for this website and registers it with the Cactal edge. Custom domains must first be enabled for the website (`websiteDomains.setEnabled`, owner-only — enabling is the billing moment); the request fails with 403 `custom_domains_disabled` otherwise. Adding or removing domains on an enabled website never changes billing. The domain is created in `pending_dns` status, and the returned `dnsRecords` list exactly what to create at your DNS provider: an ownership TXT record on `_cactal.<hostname>` plus a routing record (a CNAME for subdomains or an A record for apex domains). Hostna"
},
{
"name": "websiteDomains_verifyCustomDomain",
"description": "Re-checks the ownership TXT record, edge readiness, and whether an HTTPS request to the hostname reaches this Cactal domain, then returns the updated status. A customer CDN or reverse proxy in front is supported when it forwards the verification request to Cactal. `failureMessage` distinguishes a missing ownership record, an unreachable hostname, and a hostname served somewhere else. Cactal asks the domain nameservers directly, so new records usually count on the next check, and this endpoint is safe to poll; Cactal also re-checks pending domains automatically (every minute for the first 2 hou"
},
{
"name": "websiteDomains_setPrimaryDomain",
"description": "Makes this domain the canonical hostname for the published website: requests reaching the platform subdomain or any other custom domain are permanently redirected (HTTP 308) to it, preserving path and query. Only `active` custom domains can be made primary — the request fails with 409 otherwise. Any previous primary is cleared in the same transaction."
},
{
"name": "websiteDomains_removeCustomDomain",
"description": "Deregisters the hostname from the Cactal edge and deletes the domain record. If the removed domain was primary, the oldest remaining active custom domain is promoted automatically. If edge deregistration fails, the domain stays in `removing` status and a background sweep retries until it is gone. Platform subdomains cannot be removed."
},
{
"name": "websiteDomains_renamePlatformDomain",
"description": "Moves the website to `<label>.<platform domain>`, the free address every website is allocated at creation. `label` is just the leading part: 1-40 characters, lowercase letters, digits, and inner hyphens, and it may not be one of the labels Cactal reserves. The change takes effect immediately, on published and draft hosts alike. The previous hostname is released at the same moment, with no redirect and no grace period, so any existing links to it break and another website may claim it. Take care on a published site. Fails with 409 when the label is already taken by another website; renaming to "
},
{
"name": "websiteAssets_list",
"description": "Returns ready assets newest first as compact rows (`description`, `category`, dimensions, `url`, `srcSet`); fetch one asset for `originalUrl` and `variants`. Filter by `kind`, `category`, `type` (the broad MIME family: image, video, audio, font, or document), or `search`, which prefix-matches each term against the filename, description, and category; every term must match, else any term. Page size defaults to 50 (max 100)."
},
{
"name": "websiteAssets_get",
"description": "Returns the asset with `description`, `category`, and its CDN delivery shape: for transformable images `url` is the optimized 1920px default and `originalUrl` the original bytes; both never expire. MCP clients that render images also receive the image."
},
{
"name": "websiteAssets_importFromUrl",
"description": "Fetches 1-10 public http(s) URLs server-side, one at a time, and stores each as a ready asset with no upload or finalize step. Media only: images, fonts, PDF, audio, video, dotLottie, and Rive; text, data, documents, and archives are refused. Images, fonts, and PDFs must parse as what they claim, hosts on private addresses are rejected, the upload kind and MIME rules apply, and each download is capped at 30 MiB (larger files must be uploaded directly). Each item may carry a `description` and, for images, a `category`. Name each item by `url`, or by `photo`: the number over a picture on contact"
},
{
"name": "websiteAssets_update",
"description": "Changes `filename`, `description`, or `category`. Pass only the fields to change; `null` clears a field. `category` is images only."
},
{
"name": "websiteAssets_delete",
"description": "Archives the asset: it immediately stops appearing in list responses and its id returns 404 from every asset endpoint. Archival cannot be undone through the API; previously issued CDN URLs keep serving the file."
},
{
"name": "websiteKnowledge_project_get",
"description": "Returns the website’s durable project knowledge: the text the user maintains as `content`, plus the `agentNotes` Cactal distills from agent conversations. Both are included in every Cactal agent request. Read them before working on a website."
},
{
"name": "websiteKnowledge_project_edit",
"description": "Applies exact-match text edits to the user’s project knowledge text, in order; an empty `oldStr` appends. Change it only when the user asks; agent-discovered facts belong in agent notes. A passage that no longer matches fails with `validation` and returns the current content."
},
{
"name": "websiteKnowledge_agentNotes_edit",
"description": "Applies exact-match text edits to the agent notes, in order; an empty `oldStr` appends. Record only durable facts, decisions, rejected directions, and constraints, one short line each, never progress logs or anything derivable from the website source. A passage that no longer matches fails with `validation` and returns the current notes."
},
{
"name": "websiteKnowledge_list",
"description": "Lists the website’s private durable context entries: uploaded files and pasted text, each with a `title`, a generated `description`, and an `origin` of `upload` or `text`."
},
{
"name": "websiteKnowledge_create",
"description": "Keeps pasted or typed text as a context entry the agent searches and reads when relevant, using one of the website’s 25 slots. Cactal titles and describes it. Use this for material the user gives you to keep; your own findings belong in agent notes."
},
{
"name": "websiteKnowledge_update",
"description": "Renames a context entry or replaces the text the agent reads. Replacing text does not change the downloadable original; images have no text."
},
{
"name": "websiteKnowledge_read",
"description": "Read a bounded line range from a project context document. Read short relevant documents directly; search large documents first. Do not reread sufficient search passages."
},
{
"name": "websiteKnowledge_search",
"description": "Find evidence across selected project context documents. Batch independent queries; use passages directly when sufficient. Results merge overlapping text and include source ranges and zero-based queryIndexes into queries. matched reports a hit; truncated means evidence may be omitted, clipped means partial lines, and unavailableResourceIds were not searched. Resolve missing evidence before concluding a fact is absent."
},
{
"name": "websiteKnowledge_view",
"description": "Returns one private PNG, JPEG, or WebP context resource."
}
],
"profiled_at": "2026-11-09T10:00:48.962Z"
},
"unreachable": false
}