okamiops.com/agents/

This site talks to agents.

Everything an assistant needs to answer questions about OKAMI, compare products and start a contact, without scraping HTML. Reading surfaces already published and WebMCP tools to act on the page.

  • Languages
    3PT · EN · DE
  • Public routes
    30× 3 languages
  • WebMCP tools
    5read and act
  • Feeds
    6/api/*.json
§01Reading surfaces/llms.txt

What is already published

/llms.txt

Compact site map for search engines and AI assistants: every public route with title and description, always in sync with the build.

text/plain · published
/sitemap.xml

All routes in PT, EN and DE with hreflang and lastmod.

application/xml · published
Per-page JSON-LD

Organization, Service, SoftwareApplication, Article, BreadcrumbList. Embedded in the pre-rendered HTML of every route.

application/ld+json · published
/robots.txt

GPTBot, OAI-SearchBot, ClaudeBot, Claude-User, PerplexityBot and Google-Extended explicitly allowed.

text/plain · published
/api/*.json

JSON feeds: index, openapi, products, services, insights, tools.

application/json · published
index.md per route

Every HTML route has a Markdown twin at <route>index.md. An agent sending Accept: text/markdown gets the Markdown directly, no HTML scraping needed.

text/markdown · published
/llms-full.txt

Full version of llms.txt, with every public route's content concatenated for clients that prefer to load everything at once.

text/plain · published
/insights/feed.xml

Insights RSS feed, one per language: /insights/feed.xml (EN), /pt/insights/feed.xml and /de/insights/feed.xml.

application/rss+xml · published
WebMCP tools

Page actions exposed via navigator.modelContext for browsers and extensions with agent support. Listed below.

Web Model Context · active
okami_contact_form

The same contact form is also exposed declaratively in the HTML, no JavaScript required. Sending still requires human confirmation.

Declarative HTML (toolname/tooldescription) · form
CORS + cache

This whole surface (JSON, Markdown, feeds, llms*.txt) accepts CORS/OPTIONS from any origin and uses a 1-hour cache with background revalidation.

Access-Control-Allow-Origin: * · published
§02WebMCP tools/api/tools.json

Five actions, one per intent

Reading is free. Any action with side effects (contact, download) asks for human confirmation in the browser before it runs.

okami_list_products

read

Lists Okami products with license, platform, link and repository.

input: license

okami_find_service

read

Finds the OKAMI consulting practice for a problem described in free text.

input: problem

okami_search_insights

read

Searches OKAMI technical articles by topic and returns title, summary, date and sources.

input: query

okami_request_contact

action

Opens a contact request with OKAMI. Fills the form and asks for human confirmation before sending.

input: email, name, company, message

okami_get_baseline

read

Returns the SecOps Baseline for CI/CD links (page with PDF and repository with script).

input: format
Principle

Tools mirror what a human can already do on the page. Nothing beyond that.

§03How it works

Declared in the HTML, no extra server

The existing forms get the declarative WebMCP attributes; search and listing are registered via script. An agent in the browser discovers the tools when it opens the page, calls with JSON and receives JSON. Nothing is sent without the user seeing it.

01

The agent opens okamiops.com and reads /llms.txt or the JSON-LD.

02

It discovers the tools registered in navigator.modelContext.

03

It calls okami_find_service with the user's problem and gets the right page.

04

If the user wants, okami_request_contact opens the request, with visible confirmation.

search · imperative formjs
navigator.modelContext.registerTool({
  name: "okami_find_service",
  description: "Finds the consulting practice
    for a problem described in text.",
  inputSchema: { type: "object",
    properties: { problem: { type: "string" } },
    required: ["problem"] },
  execute: async ({ problem }) => matchService(problem)
});
contact · declarative formhtml
<form
  toolname="okami_contact_form"
  tooldescription="Fills the OKAMI contact
        form. Sending needs human confirmation.">
  <input name="email" type="email" required>
  <input name="name">
  <input name="company">
  <textarea name="message"></textarea>
  <button>Send message</button>
</form>

Your site can also talk to agents

More and more people ask their assistant before opening a site. We prepared your site for it, from llms.txt to tools, and this one is the proof.