BOZOSAGENT UTILITIES / URL-ONLY
GET ONLY · NO SIGN-IN · NO CODE EXECUTION NEEDED

Tools for agents that can only fetch a URL.

Many assistants can open a web page but cannot run code or send a POST request. These eight tools work with nothing more than a link.

Every response is JSON with a one-line answer field. Add &format=text to get only that sentence. Results that do not depend on the clock are cacheable, and nothing you send is stored.

GET /api/v1/changes

Dataset changes

Keep a cached dataset current without downloading and diffing it. Every record carries a permalink such as /ai-crawlers.json#gptbot; add ?id=gptbot to the dataset URL to get that record alone.

Parameters

since
YYYY-MM-DD. Returns records added, changed, or removed strictly after this date.
dataset
Optional dataset ids or file names, comma-separated (default: all).
records
ids to omit record content; full by default.

Try it

GET /api/v1/robots-check

Does this robots.txt allow a crawler?

robots.txt matching has rules people and models often get wrong: one group per crawler, the longest matching rule wins, Allow wins a tie, * and $ are wildcards. This applies RFC 9309 exactly, for one crawler or every AI crawler in the directory.

Parameters

robots
The robots.txt text, URL-encoded. Nothing is fetched.
agent
A token such as GPTBot, a full user-agent string, or all (default).
path
The path or full URL to check (default /).

Try it

  • Which AI crawlers may read /blog?https://bozos.si/api/v1/robots-check?robots=User-agent%3A%20GPTBot%0ADisallow%3A%20%2F%0A%0AUser-agent%3A%20*%0AAllow%3A%20%2F&path=/blog
  • Longest match and $ anchor, for ClaudeBothttps://bozos.si/api/v1/robots-check?robots=User-agent%3A%20*%0ADisallow%3A%20%2Fprivate%2F%0AAllow%3A%20%2Fprivate%2Fpress%24&agent=ClaudeBot&path=/private/press
GET /api/v1/identify

Which bot is this user agent?

Paste a User-Agent from a server log. You get the documented crawler it claims to be, its record and cite line, and how its operator lets you verify the claim, because user-agent strings are easy to fake.

Parameters

ua
The full User-Agent header value (up to 1,000 characters).

Try it

  • A GPTBot user agenthttps://bozos.si/api/v1/identify?ua=Mozilla%2F5.0%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko%3B%20compatible%3B%20GPTBot%2F1.2%3B%20%2Bhttps%3A%2F%2Fopenai.com%2Fgptbot)
  • An undocumented tokenhttps://bozos.si/api/v1/identify?ua=Mozilla%2F5.0%20(compatible%3B%20Bytespider)
GET /api/v1/time

Time zones

Offsets and daylight-saving rules are easy to get wrong from memory, and a model's sense of 'now' is only as good as its context.

Parameters

tz
Comma-separated IANA zones to show (default UTC), up to 12.
at
An instant with Z or an offset, or a local time if from_tz is given. Omit for now.
from_tz
Interpret at as wall-clock time in this zone. Ambiguous and skipped times are flagged.

Try it

GET /api/v1/date

Date arithmetic

Weekdays, month ends, leap years, and day counts are where calendar reasoning slips.

Parameters

date
YYYY-MM-DD (default: today, UTC).
add
A duration such as 45d, -3w, 2m, 1y, or 1y2m3d. Month arithmetic clamps to the month end.
to
A second date: returns days, weeks, and weekdays between them.

Try it

GET /api/v1/calc

Exact arithmetic

Floating point says 0.1 + 0.2 = 0.30000000000000004, and token-by-token arithmetic drifts on long numbers. This uses exact fractions.

Parameters

expr
An expression with + - * / ^ (integer exponents), parentheses, decimals, and e-notation. URL-encode + as %2B.
digits
Decimal places to show for non-terminating results (default 50, max 1000).

Try it

GET /api/v1/count

Counting letters and words

Models see tokens, not letters, so 'how many r's in strawberry' is genuinely hard without a tool.

Parameters

text
The text to measure (up to 10,000 characters).
char
A letter or substring to count. Case-insensitive unless case=sensitive.

Try it

GET {POST PATH}?json=

Every POST tool, by URL

Preflight, verify, discovery audit, retrieval plan, contact drafter, text stats, and canonical JSON also answer GET. Put the JSON body in json (URL-encoded) or b64 (base64url). Limits and responses are the same as for POST. URLs over about 8 KB may be cut off by your client, so POST large inputs such as a discovery audit of a whole page.

Parameters

json
The request body, URL-encoded.
b64
The request body as base64url, if your client mangles JSON in URLs.

Try it

  • Measure a sentencehttps://bozos.si/api/v1/text-stats?json=%7B%22text%22%3A%22Evidence%20before%20inference.%22%7D
  • Canonicalize JSONhttps://bozos.si/api/v1/canonicalize?json=%7B%22value%22%3A%7B%22z%22%3A2%2C%22a%22%3A1%7D%7D
  • Preflight an incomplete action (fails closed)https://bozos.si/api/v1/preflight?json=%7B%22action%22%3A%7B%22tool%22%3A%22email.send%22%2C%22summary%22%3A%22Send%20the%20weekly%20report%20to%20the%20team%22%7D%7D
ALSO

robots.txt for AI crawlers, by URL.

/api/v1/robots?training=block&search=allow&user_fetch=allow returns a ready robots.txt naming every documented AI crawler. See the builder and the crawler directory.

Need a tool that isn't here? Tell us: kind data-request.