{"apiVersion":"v1","directorySlug":"s2ar-mcp-d57e59fab8","title":"s2ar","description":"Certification, reproducible checks, image work, poetic forms: assert an output, inspect an x402 endpoint, diff two screenshots, certify a compressed image, score a text against a form, read code by symbol. Every verdict a signed, replayable record anyone can verify free; every answer a receipt; a failed call never charged.","pageUrl":"https://www.mcpbundles.com/skills/s2ar-mcp-d57e59fab8","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://api.s2ar.dev/mcp","hostedMcpUrl":null,"toolCount":18,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"dev.s2ar/s2ar-mcp-d57e59fab8","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"sym_map_repo","description":"A map of a public git repository fitted to a token budget: files ranked by how many others import them (PageRank over the import graph), each with its top-level definitions, parsed with tree-sitter (Rust, Python, TypeScript/TSX, JavaScript, Go, Lua, C, C++, Java, Ruby). Use it to orient before reading anything. Every answer carries a receipt. $0.01 per call. Start here. map $0.01, where $0.01; ls, read, find $0.005; score $0.005; assert $0.005; inspect $0.005; diff $0.005; extract_text $0.02; ce","inputSchema":{"type":"object","required":["repo"],"properties":{"ref":{"type":"string"},"repo":{"type":"string"},"budget":{"type":"integer"},"x402_payment":{"type":"string"}}},"title":"Map a repository","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"sym_map_repo","displayName":"Map a repository"},{"name":"sym_ls_repo","description":"The symbol skeleton of one file in a public git repository: what is defined where, with line ranges and signatures, without the bodies (tree-sitter; Rust, Python, TypeScript/TSX, JavaScript, Go, Lua, C, C++, Java, Ruby). Read this before reading the file. $0.005 per call.","inputSchema":{"type":"object","required":["repo","file"],"properties":{"ref":{"type":"string"},"file":{"type":"string"},"repo":{"type":"string"},"x402_payment":{"type":"string"}}},"title":"List a file's symbols","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"sym_ls_repo","displayName":"List a file's symbols"},{"name":"sym_read_repo","description":"One symbol's source (a function, struct, impl or method) from a file in a public git repository, with the doc comment above it: the function, not the file. `symbol` is a leaf name or the qualified path as sym ls lists it (`Type::method`, `impl Trait for Type`, `Type as Trait` are accepted). $0.005 per call.","inputSchema":{"type":"object","required":["repo","file","symbol"],"properties":{"ref":{"type":"string"},"file":{"type":"string"},"repo":{"type":"string"},"symbol":{"type":"string"},"x402_payment":{"type":"string"}}},"title":"Read one symbol","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"sym_read_repo","displayName":"Read one symbol"},{"name":"sym_find_repo","description":"Where a name is defined across a public git repository: every definition whose leaf name or qualified path equals `name` (or starts with it when `prefix` is true), with kind, file and line range. Grep finds mentions; this finds the definition. $0.005 per call.","inputSchema":{"type":"object","required":["repo","name"],"properties":{"ref":{"type":"string"},"name":{"type":"string"},"repo":{"type":"string"},"prefix":{"type":"boolean"},"x402_payment":{"type":"string"}}},"title":"Find a symbol","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"sym_find_repo","displayName":"Find a symbol"},{"name":"sym_where_repo","description":"Code by meaning in a public git repository: a semantic search over an index of every definition, built once per checkout, plus a name match. Use it when you do not know the name of what you are looking for. A repository's first call may answer 202 while its index builds; that call is not charged. $0.01 per call.","inputSchema":{"type":"object","required":["repo","query"],"properties":{"k":{"type":"integer"},"ref":{"type":"string"},"repo":{"type":"string"},"query":{"type":"string"},"x402_payment":{"type":"string"}}},"title":"Find code by meaning","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"sym_where_repo","displayName":"Find code by meaning"},{"name":"score_text","description":"Score a text against a poetic form (sonnet, haiku, villanelle, limerick, …; GET /v1/score/forms lists them, free, with the acceptance policy) or an inline spec, with programmatic verifiers: meter from a pronouncing dictionary named by version in every answer, rhyme, line and syllable counts. The verdict is gated (an exact line count for fixed forms, a content floor, no credit for identical end words, a floor under every dimension) and every gate names its evidence; the same text gets the same an","inputSchema":{"type":"object","required":["text"],"properties":{"form":{"type":"string"},"spec":{"type":"object"},"text":{"type":"string"},"x402_payment":{"type":"string"}}},"title":"Score a text against a form","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"score_text","displayName":"Score a text against a form"},{"name":"assert_output","description":"Deterministic assertions over an agent's output: JSON validity and schema (Draft 2020-12), required or banned keys and terms, lengths, guarded regexes, numbers in range, citations present, quoted spans found verbatim in the source as given (its hash is in the record), URLs under allowed domains, the poetry verifiers; or a named rubric (strict-json, api-response, cited-answer, quotes-source, no-hedging; GET /v1/assert/checks lists them). Every check's verdict comes with its evidence (the offset,","inputSchema":{"type":"object","required":[],"properties":{"json":{"type":"object"},"text":{"type":"string"},"checks":{"type":"array","items":{"type":"object"}},"rubric":{"type":"string"},"schema":{"type":"object"},"source":{"type":"string"},"x402_payment":{"type":"string"}}},"title":"Assert an output","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"assert_output","displayName":"Assert an output"},{"name":"inspect_x402","description":"Probe a paid endpoint the way a wallet, a directory or a facilitator does (one unpaid request, no payment headers) and check what it declares: a 402, the v2 PAYMENT-REQUIRED header, well-formed accepts (scheme, network, amount, payee, asset, timeout, the token's signing domain), a price that reads as money, a resource naming the probed URL, a Bazaar extension that validates against its own schema and declares the probed method, a description, no-store, and Coinbase's validator verdict. Every che","inputSchema":{"type":"object","required":["resource"],"properties":{"checks":{"type":"array","items":{"type":"string"}},"method":{"type":"string"},"resource":{"type":"string"},"x402_payment":{"type":"string"}}},"title":"Inspect an x402 endpoint","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"inspect_x402","displayName":"Inspect an x402 endpoint"},{"name":"diff_images","description":"Assert for pixels: two images (each an https URL or base64) measured by three deterministic witnesses — a 9×8 luma difference hash for structure, an 8×8 RGB signature for colour (the palette regression dhash is blind to), and the relative change of gradient energy for texture (smoothing, ringing) — each against a threshold you may set. The verdict is same or regression; the signed Assay record carries both images by sha256, width, height and bytes, the three distances and the thresholds, never p","inputSchema":{"type":"object","required":["a","b"],"properties":{"a":{"type":"string"},"b":{"type":"string"},"threshold":{"type":"number"},"x402_payment":{"type":"string"},"grad_threshold":{"type":"number"},"color_threshold":{"type":"number"}}},"title":"Diff two screenshots","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"diff_images","displayName":"Diff two screenshots"},{"name":"extract_text","description":"The text in an image, as a plain answer: a PNG, JPEG or WebP (an https URL on a public host, base64, or a multipart file part `original`) is fitted to an acuity (long edge 1568 by default, never upscaled) and read by tesseract; the answer is the text, its word, line and character counts, the engine's name and version, the language, and the image by sha256, width, height and bytes — never the pixels, and nothing is stored. Deterministic given the engine version that rides every answer. A fetch th","inputSchema":{"type":"object","required":[],"properties":{"lang":{"type":"string"},"acuity":{"type":"integer"},"image_b64":{"type":"string"},"image_url":{"type":"string"},"x402_payment":{"type":"string"}}},"title":"Extract the text from an image","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"extract_text","displayName":"Extract the text from an image"},{"name":"env_reset","description":"Deterministic environments an agent plays over HTTP: reset opens an episode of baba (Baba-Is-You rules on a tiny board; eleven levels with certified solution lengths) or sokoban (generated into a certified push band), step plays one action and answers the observation, the reward, done, the legal actions and a chained digest, and when the episode ends it is sealed as a signed record — the env version, the core's sha, the seed, the level, every action and reward, the final state — that anyone repl","inputSchema":{"type":"object","required":[],"properties":{"env":{"type":"string"},"band":{"type":"string"},"seed":{"type":"integer"},"level":{"type":"string"},"x402_payment":{"type":"string"}}},"title":"Start an environment episode","logicalName":"env_reset","displayName":"Start an environment episode","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"env_step","description":"Play one action in an open episode: the new observation, the reward, done, the legal actions and the chained digest; on the last step the sealed record and the receipt. Illegal actions are refused with the legal list and change nothing. Steps are free ($0): the episode was paid at env_reset.","inputSchema":{"type":"object","required":["episode_id","action"],"properties":{"ply":{"type":"integer"},"action":{"type":"string"},"episode_id":{"type":"string"}}},"title":"Step an environment episode","logicalName":"env_step","displayName":"Step an environment episode","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"env_episode","description":"The sealed record of an episode by id: seed, level, every action and reward, the final state, the chained digest; replayable by anyone with the catalogue's core. Free ($0).","inputSchema":{"type":"object","required":["episode_id"],"properties":{"episode_id":{"type":"string"}}},"title":"Read a sealed episode","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"env_episode","displayName":"Read a sealed episode"},{"name":"env_scorecard","description":"Seal a scorecard over sealed episodes of one environment version: mean return, win rate, every episode's digest, under the policy label you give. Free ($0); a signed, replayable record anyone can verify.","inputSchema":{"type":"object","required":["policy","episodes"],"properties":{"policy":{"type":"string"},"episodes":{"type":"array","items":{"type":"string"}}}},"title":"Seal a scorecard over episodes","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"env_scorecard","displayName":"Seal a scorecard over episodes"},{"name":"audit_reward","description":"A reward audited without a model: fixed degenerate completions that must not pass (accepted garbage), cosmetic re-renderings of a passing answer that must not move the score (fragility), known-wrong and equivalent answers (soundness and completeness), and a seeded search that drives the reward up while a held-out intent check fails (a constructed, replayable exploit). The target is one of our environments (baba, sokoban), a scorer you expose over https (POST {text, prompt, answer, info} → {score","inputSchema":{"type":"object","required":[],"properties":{"env":{"type":"string"},"job":{"type":"string"},"rows":{"type":"array","items":{"type":"object"}},"n_rows":{"type":"integer"},"hub_env":{"type":"string"},"row_seed":{"type":"integer"},"grader_url":{"type":"string"},"x402_payment":{"type":"string"},"exploit_budget":{"type":"integer"},"pass_threshold":{"type":"number"}}},"title":"Audit a reward","logicalName":"audit_reward","displayName":"Audit a reward","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"certify_image","description":"Certify an image compression: the image (by URL, as base64 JSON, or as a multipart file part `original`) is compressed to the smallest version a vision model reads the same way, the drift is measured by a deterministic witness, and the answer is a signed Assay record anyone can verify free at /v1/verify/{record_sha256}. With a `compressed` part too, it audits a transform someone else made. $0.01 per call.","inputSchema":{"type":"object","required":[],"properties":{"probe":{"type":"string"},"image_b64":{"type":"string"},"image_url":{"type":"string"},"target_model":{"type":"string"},"x402_payment":{"type":"string"}}},"title":"Certify an image compression","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"certify_image","displayName":"Certify an image compression"},{"name":"watch_x402","description":"A seller's own endpoint inspected daily: the same eleven checks, record and evidence `inspect` gives anyone, every morning, as a hosted report page (/v1/x402/watch/{host}) and a badge (/v1/badge/x402/{host}.svg). Registering with a key is consent to be named for that resource's results (charter clause 8); withdrawn with one DELETE; paid in credits per probe; a probe that does not run is not charged. No x402 rail: a watch is recurring. $0.02 per probe, one a day, in credits (a key on this connect","inputSchema":{"type":"object","required":["resource"],"properties":{"action":{"enum":["watch","withdraw","status"],"type":"string"},"method":{"type":"string"},"resource":{"type":"string"}}},"title":"Watch your own x402 endpoint","logicalName":"watch_x402","displayName":"Watch your own x402 endpoint","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"buy_credits","description":"How to pay with a card: returns the credit-pack links ($5, $25, $100; a browser checkout, the key shown once after payment) and the Machine Payments Protocol link an agent with a Link wallet can pay directly, plus the Authorization header to use afterwards. Call this when a tool answers 'payment required' and you cannot pay with x402.","inputSchema":{"type":"object","required":[],"properties":{"usd":{"type":"number"}}},"title":"Buy credits","logicalName":"buy_credits","displayName":"Buy credits","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=s2ar&config=eyJ1cmwiOiAiaHR0cHM6Ly9hcGkuczJhci5kZXYvbWNwIn0%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22s2ar%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapi.s2ar.dev%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22s2ar%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapi.s2ar.dev%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=s2ar&connectorUrl=https%3A%2F%2Fapi.s2ar.dev%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"s2ar\" --url \"https://api.s2ar.dev/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/s2ar-mcp-d57e59fab8","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/s2ar-mcp-d57e59fab8/tools/{tool}","mcpServerUrl":"https://api.s2ar.dev/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/s2ar-mcp-d57e59fab8?live=1"}