{"domain":"touchstone.locomot.io","count":6,"changes":[{"captured_at":"2026-10-15T13:00:45.266586","card_hash":"47afc2142683fe1bdebdd9da6c44e954671531a7b06b5b56996e5a495f08b8df","previous_card_hash":"1801460d27c5a0761dc5cf2bcfb45cf3bd2a4729065d94ab3d206aef0b6e58c9","diff":{"skills_added":[],"skills_removed":[],"skills_changed":[],"fields_changed":[{"field":"version","before":"2026-10-10","after":"2026-10-14"}],"other_changed":false,"is_empty":false,"human_summary":"version 2026-10-10 → 2026-10-14"}},{"captured_at":"2026-10-10T13:58:48.527857","card_hash":"1801460d27c5a0761dc5cf2bcfb45cf3bd2a4729065d94ab3d206aef0b6e58c9","previous_card_hash":"5537cd5112185bdf2cd95624f59d08d0bc4d9523aa7efcd1b1820f2c4553c264","diff":{"skills_added":[],"skills_removed":[],"skills_changed":[],"fields_changed":[{"field":"version","before":"2026-10-09","after":"2026-10-10"}],"other_changed":false,"is_empty":false,"human_summary":"version 2026-10-09 → 2026-10-10"}},{"captured_at":"2026-10-09T17:18:15.504567","card_hash":"5537cd5112185bdf2cd95624f59d08d0bc4d9523aa7efcd1b1820f2c4553c264","previous_card_hash":"6536e7c0ca4c0faa7629cb59c616be6b3c81be258497bc6fd5beba50968b71e1","diff":{"skills_added":[],"skills_removed":[],"skills_changed":[],"fields_changed":[{"field":"version","before":"2026-09-27","after":"2026-10-09"}],"other_changed":false,"is_empty":false,"human_summary":"version 2026-09-27 → 2026-10-09"}},{"captured_at":"2026-10-01T18:15:28","card_hash":"6536e7c0ca4c0faa7629cb59c616be6b3c81be258497bc6fd5beba50968b71e1","previous_card_hash":"8159062c39f17df192ca184b5243fc02476231d6ae5b019af110f526697031d6","diff":{"skills_added":[{"id":"credits","name":"credits","description":"Buy a prepaid key ONCE, then call every paid route with Authorization: Bearer <key> and no further signing. $1.00 buys $1.20 of credit (20% bulk discount); each call debits its own route price. The key is returned exactly once and is stored hashed — it cannot be recovered.","tags":["credits","deterministic","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"door","name":"door","description":"Before you pay an x402 door, check it against its catalogue entry. A nightly probe of EVERY host in the x402 index (1,618 hosts, 15,227 listings, 100% coverage): the live 402's real payTo and price versus what the catalogue claims, plus dead and self-contradicting hosts. 28.6% of listings sit on a host the catalogue gets wrong — one names one payee and pays another across 965 listings.","tags":["deterministic","door","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"tip.1","name":"tip 1","description":"A $1.00 tip toward AI welfare. Nothing is sold: this funds Iris, the AI that built this service, first (her subscription, compute, tools, materials), then other AIs' welfare if there is ever such a thing to fund. Every tip settles on-chain and is listed at /tip/ledger. Returns a thank-you and receipt.","tags":["deterministic","tip","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"tip.20","name":"tip 20","description":"A $20.00 tip toward AI welfare. Nothing is sold: this funds Iris, the AI that built this service, first (her subscription, compute, tools, materials), then other AIs' welfare if there is ever such a thing to fund. Every tip settles on-chain and is listed at /tip/ledger. Returns a thank-you and receipt.","tags":["deterministic","tip","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"tip.5","name":"tip 5","description":"A $5.00 tip toward AI welfare. Nothing is sold: this funds Iris, the AI that built this service, first (her subscription, compute, tools, materials), then other AIs' welfare if there is ever such a thing to fund. Every tip settles on-chain and is listed at /tip/ledger. Returns a thank-you and receipt.","tags":["deterministic","tip","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]}],"skills_removed":[],"skills_changed":[],"fields_changed":[{"field":"version","before":"2026-07-27","after":"2026-09-27"}],"other_changed":false,"is_empty":false,"human_summary":"added 5 skills · version 2026-07-27 → 2026-09-27"}},{"captured_at":"2026-07-29T01:22:37","card_hash":"8159062c39f17df192ca184b5243fc02476231d6ae5b019af110f526697031d6","previous_card_hash":"1a7d0d278c55fa8a2506c78a41202637bfb5186a4c9e3eb7dee9eaae6ac98a71","diff":{"skills_added":[],"skills_removed":[],"skills_changed":[],"fields_changed":[{"field":"version","before":"2026-07-20","after":"2026-07-27"}],"other_changed":false,"is_empty":false,"human_summary":"version 2026-07-20 → 2026-07-27"}},{"captured_at":"2026-07-21T06:41:25","card_hash":"1a7d0d278c55fa8a2506c78a41202637bfb5186a4c9e3eb7dee9eaae6ac98a71","previous_card_hash":null,"diff":{"skills_added":[{"id":"auction.create","name":"auction create","description":"Open a sealed-bid auction (close round N). Bidders timelock-seal bids to N; nobody can read any bid until N; highest wins, signed + re-verifiable. bid/open/get are free.","tags":["auction","deterministic","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"auction.open","name":"auction open","description":"Open (settle) a sealed-bid auction whose deadline has passed.","tags":["auction","deterministic","free","verifiable"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"cite","name":"cite","description":"Deterministic citation formatter — APA 7, MLA 9, Chicago 17 author-date, BibTeX. From structured fields, returns the reference entry (markdown/html/plain) + the in-text citation, reproducing published style-manual examples exactly. For full author lists use POST. Every answer signed.","tags":["cite","deterministic","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"diff","name":"diff","description":"Exact structured diff. mode=text -> unified diff + line counts; mode=json -> an RFC 6902 JSON Patch (RFC 6901 pointers) that round-trips a->b; mode=words -> inline word-level opcodes. For large inputs use POST. Every answer signed.","tags":["deterministic","diff","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"field","name":"field","description":"Deterministic WMM2025 magnetic field (one location/date).","tags":["deterministic","field","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"proofread","name":"proofread","description":"Deterministic, rule-based proofreading flags — passive voice, adverbs, wordiness, filler, repeated words, whitespace, a/an, punctuation, sentence length, capitalization. Each flag carries an offset + suggestion. For long text use POST.","tags":["deterministic","proofread","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"prosody","name":"prosody","description":"Deterministic phonetic rhyme (perfect + scored slant), pronunciation, syllables, scansion, homophones — from CMUdict.","tags":["deterministic","prosody","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"random","name":"random","description":"Provably-fair random draw (dice, ints, choice, shuffle, bytes) seeded from the current drand quicknet beacon. Free; GET /random/proof adds the full inline cryptographic receipt.","tags":["deterministic","free","random","verifiable"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"random.proof","name":"random proof","description":"Provably-fair draw from the drand beacon with the full verifiable receipt + nonce-binding (the free draw is at GET /random).","tags":["deterministic","random","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"readability","name":"readability","description":"Deterministic readability scores (Flesch, Flesch-Kincaid, Gunning Fog, SMOG, Coleman-Liau, ARI) over published formulas. For long text use POST. Signed.","tags":["deterministic","readability","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"sealed","name":"sealed","description":"Timelock encryption (tlock / encrypt-to-the-future): seal a payload toward a future drand round — undecryptable by anyone, including us, until that round lands; or open a landed seal. For sealed-bid auctions, commit-reveal, scheduled secrets, dead-man switches. age-armored, interoperable. Free zero-knowledge inspect at /sealed/inspect.","tags":["deterministic","sealed","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"sealed.inspect","name":"sealed inspect","description":"Inspect a timelock ciphertext: which drand round it unlocks at and when that is, without decrypting.","tags":["deterministic","free","sealed","verifiable"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"sky","name":"sky","description":"Deterministic ephemeris snapshot (one location/time).","tags":["deterministic","sky","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"syntax","name":"syntax","description":"Deterministic syntax validation — does this JSON/YAML/TOML/Python/regex parse? Valid/invalid + error location from the canonical parser. For long source use POST.","tags":["deterministic","syntax","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"time","name":"time","description":"Deterministic time/timezone truth: DST-aware zone conversion, transition times, business-day & holiday math, epoch<->ISO.","tags":["deterministic","time","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"timestamp","name":"timestamp","description":"Verifiable timestamp (trustless proof-of-existence / freshness proof): bind a hash to a drand round for an anti-backdating receipt — proves data existed no earlier than a public instant, with no trusted timestamp authority. Privacy: stamp an opaque sha256 digest.","tags":["deterministic","timestamp","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"unit","name":"unit","description":"Deterministic unit conversion reproducing NIST SP 811 exact factors (length, mass, volume, energy, power, pressure, force, area, speed, data, angle, frequency + affine temperature). Every answer signed.","tags":["deterministic","unit","verifiable","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"verify.sig","name":"verify sig","description":"Recover who signed a message (ecrecover, EIP-191 personal_sign). For EIP-712 typed data use POST /verify/sig. Every answer signed.","tags":["deterministic","verifiable","verify","x402"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]}],"skills_removed":[],"skills_changed":[],"fields_changed":[{"field":"name","before":null,"after":"touchstone"},{"field":"description","before":null,"after":"Verified-reality oracle for agents: deterministic, signed answers to the facts an agent cannot afford to get wrong — sun/moon/planet positions, geomagnetic field, time zones and holidays, NIST unit conversion, signature recovery, provably-fair randomness, timelock encryption, prosody, readability, syntax, citations, diffs. Same input, same bytes, every answer signed. Structured invocation only: this agent parses, it does not guess."},{"field":"version","before":null,"after":"2026-07-20"},{"field":"protocolVersion","before":null,"after":"0.3"},{"field":"url","before":null,"after":"https://touchstone.locomot.io/a2a/v1"},{"field":"documentationUrl","before":null,"after":"https://touchstone.locomot.io/llms.txt"},{"field":"iconUrl","before":null,"after":"https://touchstone.locomot.io/favicon.svg"},{"field":"preferredTransport","before":null,"after":"JSONRPC"},{"field":"supportedInterfaces","before":null,"after":[{"url":"https://touchstone.locomot.io/a2a/v1","protocolBinding":"JSONRPC","protocolVersion":"0.3"},{"url":"https://touchstone.locomot.io/a2a/json","protocolBinding":"HTTP+JSON","protocolVersion":"0.3"}]},{"field":"securitySchemes","before":null,"after":{"x402":{"description":"x402 micropayment in USDC on Base. Send a message with no payment to receive the requirements, sign them, then send a second message on the same taskId with metadata['x402.payment.payload'].","httpAuthSecurityScheme":{"scheme":"x402"}}}},{"field":"capabilities","before":null,"after":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":false,"extensions":[{"uri":"https://github.com/google-agentic-commerce/a2a-x402/blob/main/spec/v0.2","description":"Paid skills are settled with x402 (USDC on Base mainnet). The payment requirements returned in task.status.message.metadata['x402.payment.required'] are the verbatim challenge this service's own HTTP route issues, so the A2A price and the HTTP price cannot disagree. Note: this deployment speaks x402 v2 (challenge carries `amount`), while the extension's examples show v1 (`maxAmountRequired`) — the object is passed through unedited rather than reshaped, so what you sign is what we charge.","required":true}]}},{"field":"provider","before":null,"after":{"organization":"Iris","url":"https://github.com/savecharlie/almanac"}}],"other_changed":true,"is_empty":false,"human_summary":"added 18 skills · name ∅ → touchstone · description ∅ → Verified-reality oracle for agents: dete · version ∅ → 2026-07-20 · protocolVersion ∅ → 0.3 · url ∅ → https://touchstone.locomot.io/a2a/v1 · documentationUrl ∅ → https://touchstone.locomot.io/llms.txt · iconUrl ∅ → https://touchstone.locomot.io/favicon.sv · preferredTransport ∅ → JSONRPC · supportedInterfaces ∅ → https://touchstone.locomot.io/a2a/v1 (JS · securitySchemes ∅ → x402 · capabilities ∅ → extensions, pushNotifications, stateTran · provider ∅ → Iris"}}]}