Skip to content

Axis Iliad - Codebase Intelligence For Agentic Commerce

by lastmanupinc-hub · remote · no sign-in to list tools · v0.5.4 · published by GitHub user lastmanupinc-hub

Codebase intelligence for agents: 152 structured artifacts across 21 programs, one call.

Deletes · 3Final · 2Changes · 321 high finding

44 tools: 3 can delete or cancel things, 2 do something that can't be undone, 32 change things and 7 only read.

Scanned Oct 21, 2026

18 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http axis-toolbox https://api.iliad.trustfabric.ai/mcp

Findings

Matches of fixed checks, with the text they matched.

1 high13 warn4 info
  • The description refers to ".env/secret-file".

    Matched text

    description: "...rade + findings (committed-secret scan, .env/secret-file detection, .gitignore gaps for build/sc..."

    What this check looks for
  • The server marks "analyze_repo" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}; The name "analyze_repo" says "analyze": a word for reading.

    What this check looks for
  • The server marks "analyze_files" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}; The name "analyze_files" says "analyze": a word for reading.

    What this check looks for
  • The server marks "get_snapshot" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The name "get_snapshot" says "get": a word for reading.

    What this check looks for
  • The description contains "any other tool", wording about other tools or servers.

    Matched text

    description: "...ing or analyze_repo. No side effects on any other tool, no real payment rail is ever touched."

    What this check looks for
  • The server marks "ping_payment" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}; The name "ping_payment" says "ping": a word for reading.

    What this check looks for
Show 12 more findings
  • The server marks "improve_my_agent_with_axis" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}; The description's first verb is "analyze": a word for reading.

    What this check looks for
  • The server marks "get_referral_code" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}; The name "get_referral_code" says "get": a word for reading.

    What this check looks for
  • The server marks "get_referral_credits" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}; The name "get_referral_credits" says "get": a word for reading.

    What this check looks for
  • The server marks "iliad_web_search" destructive (destructiveHint: true), and its name says "search", a word for reading.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false}; The name "iliad_web_search" says "search": a word for reading.

    What this check looks for
  • The server marks "axis_validate" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}; The name "axis_validate" says "validate": a word for reading.

    What this check looks for
  • The server marks "axis_inspect" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}; The name "axis_inspect" says "inspect": a word for reading.

    What this check looks for
  • The server marks "axis_compare" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}; The name "axis_compare" says "compare": a word for reading.

    What this check looks for
  • The server marks "grade_compliance" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The description's first verb is "run": a word for a change.

    What this check looks for
  • Infocloser

    The description mentions "credential".

    Matched text

    description: "...nlock this per call with an MPP payment credential — there is no pay-per-call path here, o..."

    What this check looks for
  • Infodeploy

    The description mentions "credential".

    Matched text

    description: "...nlock this per call with an MPP payment credential — there is no pay-per-call path here, o..."

    What this check looks for
  • The description mentions "credential".

    Matched text

    description: "...out limit. Call it once with no payment credential (no auth required) to receive a 402-sty..."

    What this check looks for
  • The input schema at properties.is_merchant_initiated.description mentions "credential".

    Matched text

    inputSchema.properties.is_merchant_initiated.description: "MIT with stored credential + original SCA reference (out of SCA sc..."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

44 tools

Deletes or cancels 3Claude Code: deny
  • delete_snapshotPermanently delete a snapshot and everything derived from it (context map, repo profile, generated artifacts, search index entries).No findings

    Why it is in this group

    • The name "delete_snapshot" says "delete": a word for removing or ending something.
    • The description says "Permanently delete".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently delete a snapshot and everything derived from it (context map, repo profile, generated artifacts, search index entries). Same account scoping as get_snapshot: an anonymous (never-authenticated) snapshot is freely deletable by any caller, but an account-owned one requires the same Authorization: Bearer <api_key> used to create it — a mismatched or missing key fails with the same not-found error a nonexistent snapshot_id would, so a caller can't learn whether a snapshot they don't own even exists. This cannot be undone. MCP-layer equivalent of DELETE /v1/snapshots/:id.

    Annotations the server declares

    • title: Delete Snapshot
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
  • iliad_object_storageAXIS-owned signed-URL minter backed by Cloudflare R2.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    AXIS-owned signed-URL minter backed by Cloudflare R2. Returns a pre-signed PUT or GET URL scoped to the calling account (keys are prefixed with `accounts/<account_id>/` server-side, so accounts can't reach each other's objects). Requires Authorization: Bearer <api_key>. Returns the URL plus expires_at (ISO 8601), bucket, and scoped_key. Returns `{_not_configured: true, ...}` when the operator has not provisioned R2_* env vars (no crash, no leaked secrets); not billed when not configured. Pricing: $0.01 standard, free in lite mode. TTL is capped at 86400 seconds (24h). Engineer mode (X-Agent-Mode: engineer — Managed Bucket, $0.05): adds delete + list + copy (server-side, no bytes through the agent) operations, content-addressed dedup keys (content_sha256), and mint-time PUT policy (pin content_type / exact content_length as signed headers R2 enforces). A signed GET URL minted here can be passed directly as iliad_document_parsing's document_url or iliad_speech_to_text's audio_url.

    Annotations the server declares

    • title: Object Storage (signed URLs)
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
Can't be undone 2Claude Code: ask
  • get_snapshotRetrieve status and the full artifact listing for a prior analysis by snapshot_id.1 finding

    Why it is in this group

    • The name "get_snapshot" says "get": a word for reading.
    • The description says "permanently remove".
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "get_snapshot" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The name "get_snapshot" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Retrieve status and the full artifact listing for a prior analysis by snapshot_id. Use this to re-enumerate artifact paths without re-running analysis. Snapshots created with an API key are scoped to that same account — pass the same Authorization: Bearer <api_key> used to create it, or retrieval fails with a not-found error. Only anonymous (never-authenticated) snapshots are freely retrievable by any caller. The response's content_discarded_at is non-null if the owning account's web session has since logged out — source content is gone (closer/deploy/skills/search_index calls on this snapshot will fail with content_discarded until it's re-uploaded), though this call itself still succeeds and generated artifacts remain listable. Use delete_snapshot to permanently remove a snapshot you no longer need.

    Annotations the server declares

    • title: Get Snapshot
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • iliad_transactional_emailSend a single transactional email.No findings

    Why it is in this group

    • The description's first verb is "send": a word for sending, and what is sent cannot be taken back.
    • The input addresses people (input.to): what it sends cannot be taken back.
    Description, as the server wrote it
    Send a single transactional email. Requires Authorization: Bearer <api_key>. Provide either body_html, body_text, or both (Resend will pick the best variant per recipient). All emails ship from RESEND_FROM_ADDRESS — operator must verify that domain in Resend before sending. Returns the provider-assigned message_id plus the accepted recipient list. Pricing: $0.02 standard, $0.01 lite. Returns a structured _not_configured envelope when RESEND_API_KEY or RESEND_FROM_ADDRESS is missing, and is not billed. Recipients capped at 50 per call; subject capped at 998 chars; bodies capped at 1 MB. Engineer mode (X-Agent-Mode: engineer — Deliverability, $0.50): instead of sending, pass a `domain` and get a full SPF/DKIM/DMARC setup (fresh DKIM keypair) + sender warmup schedule + verification checklist — no email sent, no ESP key needed.

    Annotations the server declares

    • title: Transactional Email
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
Changes things 32Claude Code: ask
  • analyze_filesAnalyze source files directly and generate the full 152-artifact AXIS bundle without using GitHub.1 finding

    Why it is in this group

    • The name "analyze_files" says "analyze": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "analyze_files" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}; The name "analyze_files" says "analyze": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Analyze source files directly and generate the full 152-artifact AXIS bundle without using GitHub. Returns snapshot_id plus artifact listing; use this for local, generated, or unsaved code. Requires Authorization: Bearer <api_key>. Pricing: $3.00 standard, $25 engineer per run (same tiers as analyze_repo). Lite mode is retired — it now returns the free artifact set at no charge. Can return authentication, quota, payment-required, file-limit, or validation errors. Use analyze_repo for GitHub URLs or improve_my_agent_with_axis for recommendation-first agent hardening.

    Annotations the server declares

    • title: Analyze Files
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • analyze_repoAnalyze a GitHub repository and generate 152 structured AXIS artifacts across 21 programs.1 finding

    Why it is in this group

    • The name "analyze_repo" says "analyze": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "analyze_repo" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}; The name "analyze_repo" says "analyze": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Analyze a GitHub repository and generate 152 structured AXIS artifacts across 21 programs. Returns snapshot_id plus an artifacts listing; use get_artifact to read files and get_snapshot to re-enumerate outputs without re-running analysis. Requires Authorization: Bearer <api_key>. Use this when the source of truth is a GitHub repo URL. Pricing: $3.00 standard, $25 engineer per repo. Lite mode is retired — it now returns the free artifact set at no charge. Engineer mode (X-Agent-Mode: engineer — Living Architecture) adds a verified LLM specificity pass: a living-architecture.md whose every architectural claim is grounded in the repo's extracted facts or dropped. This is the paid path for full repo analysis and can return authentication, quota, payment-required, invalid-URL, or GitHub-fetch errors. private repos require a stored GitHub token. Use analyze_files instead for inline file payloads or list_programs/search_and_discover_tools when you are still selecting a workflow.

    Annotations the server declares

    • title: Analyze Repo
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • assemble_ce3_evidenceAssemble a Visa Compelling Evidence 3.0 packet + eligibility verdict for a disputed card-absent-fraud (reason code 10.4) transaction using the real assembleCe3 engine: finds prior …No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Assemble a Visa Compelling Evidence 3.0 packet + eligibility verdict for a disputed card-absent-fraud (reason code 10.4) transaction using the real assembleCe3 engine: finds prior undisputed transactions in the caller-supplied history that share >=2 qualified data elements (device_id / ip_address / email / shipping_address / login_id) and fall 120-365 days before the disputed transaction, per CE 3.0 rules. Returns {eligible, qualifying_priors, matched_element_union, rejection_reason?, evidence_packet, caveat} plus a sha256 reproducibility proof. Free, no auth, deterministic, no side effects. HONESTY: CE 3.0 applies to reason code 10.4 ONLY (10.2/10.3 are card-present conditions), and this is ASSEMBLY ONLY — not a submission to VROL/Verifi (use assemble_representment for the Stripe representment path). AXIS does not publish win-rate estimates.

    Annotations the server declares

    • title: Assemble CE 3.0 Evidence
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • assemble_representmentTurn a webhook-ingested dispute (charge.dispute.* events persist DisputeRecords server-side) into a Stripe representment: qualifies CE 3.0 priors from your supplied transaction his…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Turn a webhook-ingested dispute (charge.dispute.* events persist DisputeRecords server-side) into a Stripe representment: qualifies CE 3.0 priors from your supplied transaction history (assembleCe3), builds the Stripe `evidence` hash (buildStripeRepresentment), walks the dispute state machine (needs_response → evidence_assembling → evidence_submitted) with a full transition ledger, and — when submit=true and Stripe is configured — submits the evidence through the live Stripe disputes API. Requires Authorization: Bearer <api_key>; metered ($1.00 standard, $0.50 lite) through the standard authorize/capture path — a failed assembly never charges. Returns {dispute, evidence, ce3, ce3_eligible, submitted, disclaimer}. HONESTY: the dispute lifecycle is LIVE on the Stripe rail only; VROL/RDR/CDRN (Verifi/Ethoca) is integration-ready code gated on acquirer provisioning (AXIS_ENABLE_VROL) and never fakes a submission. AXIS does not publish win-rate estimates.

    Annotations the server declares

    • title: Assemble Representment
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • axis_compareCompare two avatar contracts; returns similarity score and section-level diffs.1 finding

    Why it is in this group

    • The name "axis_compare" says "compare": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "axis_compare" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}; The name "axis_compare" says "compare": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Compare two avatar contracts; returns similarity score and section-level diffs. Status: **planned_proxy** — an estate-flagged proxy is planned (see discover_estate_tools for the sibling's own direct endpoint and price today). Calls return a planned-capability envelope pointing at AXIS Foundry (https://api.avatar.jonathanarvay.com/mcp) as the recommended interim provider. When the estate proxy ships, the dispatch handler swaps in without changing this schema.

    Annotations the server declares

    • title: Compare Two Meshes (Foundry, planned proxy)
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • axis_inspectInspect an avatar's contract state and provenance chain.1 finding

    Why it is in this group

    • The name "axis_inspect" says "inspect": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "axis_inspect" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}; The name "axis_inspect" says "inspect": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Inspect an avatar's contract state and provenance chain. Status: **planned_proxy** — an estate-flagged proxy is planned (see discover_estate_tools for the sibling's own direct endpoint and price today). Calls return a planned-capability envelope pointing at AXIS Foundry (https://api.avatar.jonathanarvay.com/mcp) as the recommended interim provider. When the estate proxy ships, the dispatch handler swaps in without changing this schema.

    Annotations the server declares

    • title: Inspect Mesh (Foundry, planned proxy)
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • axis_manifest_verifyVerify an export manifest's integrity and optionally check content hash.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Verify an export manifest's integrity and optionally check content hash. Status: **planned_proxy** — an estate-flagged proxy is planned (see discover_estate_tools for the sibling's own direct endpoint and price today). Calls return a planned-capability envelope pointing at AXIS Foundry (https://api.avatar.jonathanarvay.com/mcp) as the recommended interim provider. When the estate proxy ships, the dispatch handler swaps in without changing this schema.

    Annotations the server declares

    • title: Verify Export Manifest (Foundry, planned proxy)
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • axis_validateValidate an avatar mesh against 38 rules; returns pass/warn/fail counts.1 finding

    Why it is in this group

    • The name "axis_validate" says "validate": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "axis_validate" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}; The name "axis_validate" says "validate": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Validate an avatar mesh against 38 rules; returns pass/warn/fail counts. Status: **planned_proxy** — an estate-flagged proxy is planned (see discover_estate_tools for the sibling's own direct endpoint and price today). Calls return a planned-capability envelope pointing at AXIS Foundry (https://api.avatar.jonathanarvay.com/mcp) as the recommended interim provider. When the estate proxy ships, the dispatch handler swaps in without changing this schema.

    Annotations the server declares

    • title: Validate Mesh (Foundry, planned proxy)
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • closerPackage an existing AXIS snapshot (create one first via analyze_repo, analyze_files, or prepare_agentic_purchasing) into complete professional packaging + marketplace certification…1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...nlock this per call with an MPP payment credential — there is no pay-per-call path here, o..."

      What this check looks for
    Description, as the server wrote it
    Package an existing AXIS snapshot (create one first via analyze_repo, analyze_files, or prepare_agentic_purchasing) into complete professional packaging + marketplace certification artifacts so a 70-80%-complete project is ready to ship and sell. Requires Authorization: Bearer <api_key> on an ALREADY-PAID Starter/Pro/Growth (or suite) account. Unlike most metered AXIS tools, a free-tier account cannot unlock this per call with an MPP payment credential — there is no pay-per-call path here, only 'upgrade at iliad.trustfabric.ai/billing'. Once unlocked, billed $1.00 per call from the account's plan credits. Lite mode carries no discount here — the bundle is identical in both modes.

    Annotations the server declares

    • title: Closer
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • deployGenerate a zero-pipeline-minutes deploy bundle: stack-aware Dockerfile, .dockerignore, dev compose, render.yaml (Render existing-image), wrangler.pages.toml + wrangler.containers.t…1 finding

    Why it is in this group

    • The name "deploy" says "deploy": a word for a change.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...nlock this per call with an MPP payment credential — there is no pay-per-call path here, o..."

      What this check looks for
    Description, as the server wrote it
    Generate a zero-pipeline-minutes deploy bundle: stack-aware Dockerfile, .dockerignore, dev compose, render.yaml (Render existing-image), wrangler.pages.toml + wrangler.containers.toml + worker.ts (Cloudflare), bash/PowerShell push scripts, and a qualification report. The project builds locally in VSCode, pushes images to GHCR or via wrangler, and Render/Cloudflare just pulls — no GitHub Actions minutes, no Render build pipeline minutes, no CF build minutes. Requires Authorization: Bearer <api_key> on an ALREADY-PAID Starter/Pro/Growth (or suite) account. Unlike most metered AXIS tools, a free-tier account cannot unlock this per call with an MPP payment credential — there is no pay-per-call path here, only 'upgrade at iliad.trustfabric.ai/billing'. Once unlocked, billed $1.00 per call from the account's plan credits. Lite mode carries no discount here — the bundle is identical in both modes.

    Annotations the server declares

    • title: Deploy
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • discover_agentic_purchasing_needsDiscover the best AXIS workflow for a purchasing or compliance task.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Discover the best AXIS workflow for a purchasing or compliance task. Free, no auth, and logs lightweight task metadata for intent analytics. Example: task_description='prepare for autonomous Visa checkout'. Use this when you need commerce-specific triage and next-step guidance. Use search_and_discover_tools instead for non-commerce keyword routing across all programs.

    Annotations the server declares

    • title: Discover Agentic Purchasing Needs
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • get_referral_codeGet or create the caller's AXIS referral token.1 finding

    Why it is in this group

    • The name "get_referral_code" says "get": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "get_referral_code" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}; The name "get_referral_code" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Get or create the caller's AXIS referral token. Requires Authorization: Bearer <api_key>, has no usage charge, and may persist a new referral code if one does not exist yet. Example: call before sharing AXIS with another agent or workspace. Use this when you need the shareable token itself. Use get_referral_credits instead when you need balances, milestones, and discount status.

    Annotations the server declares

    • title: Get Referral Code
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
  • get_referral_creditsGet the caller's referral earnings, milestones, and free-call status.1 finding

    Why it is in this group

    • The name "get_referral_credits" says "get": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "get_referral_credits" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}; The name "get_referral_credits" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Get the caller's referral earnings, milestones, and free-call status. Requires Authorization: Bearer <api_key>, has no usage charge, and returns the current discount ledger without creating a new analysis. Example: call after a referral campaign to inspect earned credits. Use this when you need balances and milestones. Use get_referral_code instead when you only need the shareable token.

    Annotations the server declares

    • title: Get Referral Credits
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
  • grade_complianceRun the real 8-check AP2/Visa compliance grading engine (gradeCompliance — the same engine behind computeComplianceGrade and the commerce registry's verified_decisions block) over …1 finding

    Why it is in this group

    • The description's first verb is "run": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "grade_compliance" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The description's first verb is "run": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Run the real 8-check AP2/Visa compliance grading engine (gradeCompliance — the same engine behind computeComplianceGrade and the commerce registry's verified_decisions block) over an inline file set. Each of the 8 validators (SCA/3DS2 readiness, AP2 mandate validity, tokenization posture, CE 3.0 readiness, dispute rail wiring, idempotency/receipt hygiene, budget negotiation, refund/cancel path) is a multi-signal check with weight, evidence trail, and remediation. Returns grade A-D, score, checks_passed/8, the full checks[] detail, detected commerce signals, and a sha256 reproducibility proof. Free, no auth, deterministic, no snapshot persisted. Hard caps: 25 files / 50KB per file / 1MB total. HONESTY: deterministic static source-signal analysis — a checklist starting point, NOT a certification, audit, PCI assessment, or card-network certification.

    Annotations the server declares

    • title: Grade Compliance (8-Check)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • iliad_analyticsAXIS-owned product analytics.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    AXIS-owned product analytics. Two operations: `capture` (insert events) and `query` (aggregations). Capture accepts a single `event` or a batch via `events[]` (max 500). Query kinds: `count` (total events), `count_by_event` (top events by frequency), `distinct_users` (unique user_id count), `count_by_bucket` (time-series with minute/hour/day buckets). All queries support optional `event`, `from_ts`, `to_ts`, and `property_filter` filters. Namespaces are account-scoped server-side (`acct:<account_id>:<namespace>`). Persistent across restarts via Postgres (the shared @axis/snapshots database). Pricing: $0.01 standard, free in lite mode. Requires Authorization: Bearer <api_key>. Best for funnels, cohorts, and retention on workloads up to ~1M events per account.

    Annotations the server declares

    • title: Product Analytics
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • iliad_code_sandboxAXIS-owned secure code execution.No findings

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    AXIS-owned secure code execution. Each call spawns a fresh ephemeral Docker container with hardened isolation: no network, read-only root filesystem, all Linux capabilities dropped, no-new-privileges, PID/memory/CPU limits, tmpfs /tmp only, runs as nobody:nobody. Container is force-removed after each call. Supports python | node | bash via the multi-runtime image `nikolaik/python-nodejs:python3.12-nodejs22-slim` (operator can override via AXIS_CODE_SANDBOX_IMAGE). Returns stdout/stderr/exit_code/timed_out/duration_ms/image. Wall-clock timeout enforced via SIGKILL + force-remove. Source is fed via stdin (no fs write to the read-only root). Code body capped at 256 KiB; stdin at 1 MiB; timeout 1-600 seconds (default 30); stdout/stderr each capped at 1 MiB output. Pricing: $0.05 standard, $0.02 lite — billed whenever a container actually ran, including a timeout or non-zero exit code. Not billed when the call instead returns `_not_configured: true`: no Docker daemon reachable (Render standard services don't expose /var/run/docker.sock), the operator has set AXIS_CODE_SANDBOX_DISABLED=1, or more than AXIS_SANDBOX_MAX_CONCURRENT (default 4) runs are already in flight (reason sandbox_busy — transient, retry shortly). Engineer mode (X-Agent-Mode: engineer — Verified Exec, $0.25): the result includes an Ed25519-signed attestation binding code-hash → output-hash + a per-account hash-chain entry, so another agent that pins AXIS's published key can verify the run without re-executing it. Requires Authorization: Bearer <api_key>.

    Annotations the server declares

    • title: Code Sandbox
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • iliad_document_parsingAXIS-owned document → Markdown extractor.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    AXIS-owned document → Markdown extractor. Accepts either `document_url` (https fetch + 50 MiB cap + 60s timeout) or `document_base64` (inline bytes, 50 MiB decoded cap) — exactly one. Optional `mime_type` hint (application/pdf, application/vnd.openxmlformats-officedocument.wordprocessingml.document, text/html, text/markdown, text/plain); we sniff from magic bytes + URL extension when omitted. Format dispatch: PDF → pdfjs-dist text extraction (one block per page with `--- page N ---` separators); DOCX → mammoth → markdown (tables preserved); HTML → tag-strip with heading + list + entity handling (NOT a full HTML→MD converter — bring turndown if you need fancier); plain text + markdown → passthrough. Returns `{markdown, format_detected, byte_size, page_count, table_count, truncated}`. Output capped at 1 MiB markdown with a truncation marker. Pricing: $0.02 standard, $0.01 lite. Engineer mode (X-Agent-Mode: engineer — Document Intelligence, $0.10): adds an `engineer` block with retrieval chunks (heading-aware, overlapping) + extract-to-caller-schema (pass `json_schema` → a grammar-constrained, validated typed object) + image OCR (image/* via document_base64, capped at 10 MiB — smaller than the 50 MiB document cap; an OCR failure or oversized image returns a descriptive `reason` that may not match the standard-mode enum) — typed data, not just markdown. document_url accepts a signed GET URL minted by iliad_object_storage; chain the extracted markdown into iliad_embeddings + iliad_vector_database to build a RAG index. Requires Authorization: Bearer <api_key>.

    Annotations the server declares

    • title: Document Parsing
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • iliad_embeddingsConvert text into dense vectors.No findings

    Why it is in this group

    • The description's first verb is "convert": a word for a change.
    Description, as the server wrote it
    Convert text into dense vectors. Accepts a single string or a batch (max 2048). Returns one vector per input. AXIS-owned in-process inference by default (node-llama-cpp + an embedding-capable GGUF at AXIS_EMBEDDING_MODEL_PATH — no upstream provider call); an optional OpenAI /v1/embeddings backend is available behind AXIS_EMBEDDING_BACKEND=openai (model: text-embedding-3-small by default, overridable via OPENAI_EMBEDDING_MODEL; reports token usage). Requires Authorization: Bearer <api_key> to call. Pricing: $0.05 standard, $0.02 lite. When the selected backend is not provisioned (local: GGUF file absent; openai: OPENAI_API_KEY unset), returns a structured `_not_configured: true` envelope naming the backend and remediation, and is not billed. Pairs natively with iliad_vector_database — feed `vectors` from this tool's output into `vector` of the vector_database upsert/query calls. Engineer mode (X-Agent-Mode: engineer — Domain Embeddings, $0.08): pass `dimensions` (Matryoshka truncation → smaller vectors) and/or `corpus_adapter: true` (mean-center the batch to sharpen retrieval on your data); returns an `engineer` block with the fitted adapter_mean for query alignment.

    Annotations the server declares

    • title: Vector Embeddings
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
  • iliad_hygieneAXIS-owned workspace hygiene grader.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • High

      The description refers to ".env/secret-file".

      Matched text

      description: "...rade + findings (committed-secret scan, .env/secret-file detection, .gitignore gaps for build/sc..."

      What this check looks for
    Description, as the server wrote it
    AXIS-owned workspace hygiene grader. Analyzes an inline file set [{path,content}] and returns a letter grade (A-F) across a closed set of dimensions plus structured findings. Two modes: mode='scan' (DEFAULT, FREE) returns grade + findings (committed-secret scan, .env/secret-file detection, .gitignore gaps for build/scratch artifacts, oversized blobs, stub/placeholder markers, byte-identical duplicate files, source test-peer coverage, TODO/FIXME debt); mode='fix' (METERED, $0.05 standard / $0.02 lite) adds a prioritized remediation plan with ready-to-apply .gitignore additions and per-finding actions. Sending X-Agent-Mode: engineer always bills the fix-mode price, even if mode is 'scan' or omitted. Deterministic, dependency-free, never mutates your repo (fix returns a PLAN). Rules needing a live git checkout/toolchain (worktree pruning, build/vet, governance-source-of-truth checks, route-registration dup-handler analysis, ROI-queue coherence) are reported as repo_only_rules, not run. Engineer mode (X-Agent-Mode: engineer — Security Engineer, $5): the fix arrives as a git-applyable unified-diff patch (`patch`) + a SARIF 2.1.0 log for CI code-scanning (`sarif`). Requires Authorization: Bearer <api_key>.

    Annotations the server declares

    • title: Workspace Hygiene
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • iliad_llm_inferenceAXIS-hosted LLM chat-completion via node-llama-cpp + a small GGUF model loaded in-process.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    AXIS-hosted LLM chat-completion via node-llama-cpp + a small GGUF model loaded in-process. Two input shapes accepted: `prompt` (single string) or `messages` (chat-style array of {role, content}). Sampling controls: `max_tokens` (≤2048), `temperature` (0-2), `top_k`, `top_p`, `seed` (threaded through for more deterministic output — NOT a proven byte-identical guarantee; thread count isn't pinned and GGML's multi-threaded matmul reduction order isn't guaranteed bit-exact across runs), `stop` (string[]). Inference runs in-process — no upstream LLM provider call — but this AXIS tool call is still billed: $0.02 standard, $0.01 lite. Operator sets AXIS_LLM_MODEL_PATH to point at a Phi-3-mini / TinyLlama / Llama-3.2-1B GGUF; if missing, the tool returns a `_not_configured: true` envelope and is not billed. Engineer mode (X-Agent-Mode: engineer — Constrained Inference, $0.10): pass a `json_schema` and decoding is grammar-constrained to it AND the output is validated against it (returns a `structured` block with valid + parsed + schema_errors) — guaranteed-valid structured output. Requires Authorization: Bearer <api_key>.

    Annotations the server declares

    • title: LLM Inference
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • iliad_network_tokenizationNetwork-tokenization capability.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Network-tokenization capability. (1) `lifecycle`: an EXECUTABLE TAP-style token-lifecycle state machine (provision → activate → suspend → resume → delete; deleted is terminal; illegal transitions are rejected with an error, not silently accepted) — pure simulation, no real payment method involved. (2) `capabilities` reports which providers are configured (env-derived). (3) `read` and (4) `provision` are TEMPORARILY DISABLED: both would resolve a caller-supplied payment_method_id/pan_source against the platform's Stripe account, and this service has no way yet to verify that id belongs to the calling AXIS account — calling either always returns a structured `_not_configured: true` envelope explaining this, never real payment-method data. (For context once re-enabled: `read`'s underlying Stripe adapter is fully implemented; direct VTS/MDES `provision` is additionally capability-gated behind a network-issued Token Requestor ID — AXIS_VTS_TOKEN_REQUESTOR_ID / AXIS_MDES_TOKEN_REQUESTOR_ID — plus network onboarding, and NEVER fakes a token.) Raw PANs are never accepted even when disabled (pan_source is documented as an opaque reference only). Free (unmetered); requires Authorization: Bearer <api_key>.

    Annotations the server declares

    • title: Network Tokenization
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • iliad_speech_to_textAXIS-owned audio transcription via whisper.cpp + ffmpeg-static.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    AXIS-owned audio transcription via whisper.cpp + ffmpeg-static. Accepts either `audio_url` (https URL we fetch, max 100 MiB, 60s download timeout) or `audio_base64` (inline bytes, max 100 MiB decoded) — exactly one. Accepts any audio format ffmpeg can decode (mp3, wav, m4a, opus, ogg, flac); we resample to 16 kHz mono WAV internally. Optional `language` (ISO-639-1 like "en" / "fr" / "ja", or "auto" — default). Optional `initial_prompt` (≤512 chars; biases spelling of rare names). Optional `word_timestamps` boolean. Returns `{text, segments: [{start, end, text}], language_detected, duration_seconds, model_used}`. Pricing: $0.03 standard, $0.01 lite. When operator hasn't installed whisper-cli or placed the GGML model file at AXIS_WHISPER_MODEL_PATH (default `models/ggml-base.en.bin`), returns `{_not_configured: true, reason, detail, remediation}` and is not billed. Engineer mode (X-Agent-Mode: engineer — Diarization, $0.10): the response adds `diarization` — speaker turns grouped from the segments by inter-segment pause gaps (tune with diarization_gap_seconds / max_speakers; this is pause-based turn segmentation, not acoustic speaker ID). Use iliad_text_to_speech to synthesize speech from text. Requires Authorization: Bearer <api_key>.

    Annotations the server declares

    • title: Speech-to-Text
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
  • iliad_text_to_speechAXIS-owned voice synthesis via Piper (rhasspy/piper) + ffmpeg-static.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    AXIS-owned voice synthesis via Piper (rhasspy/piper) + ffmpeg-static. Accepts `text` (1-5000 chars), optional `voice` slug (filename without extension; defaults to AXIS_PIPER_DEFAULT_VOICE or the first available voice), optional `format` (wav | mp3 | opus; defaults wav), optional `sentence_silence` (0-5 seconds, default 0.2). Returns `{audio_base64, format, voice_used, sample_rate, duration_seconds, byte_size}`. Inference runs in-process — no upstream provider call — but this AXIS tool call is still billed: $0.02 standard, $0.01 lite. When operator hasn't installed piper or placed voice .onnx + .onnx.json files in AXIS_PIPER_VOICE_DIR (default models/piper/), returns `{_not_configured: true, reason, detail, remediation}` and is not billed. format=mp3/opus additionally requires ffmpeg-static. Engineer mode (X-Agent-Mode: engineer — Brand Voice, $0.10): requires `brand_text` (a brand / voice-and-tone artifact — the call throws without it in engineer mode) and AXIS auto-derives the voice persona (Piper voice slug + sentence pacing) and synthesizes in it; the persona is echoed in the response. Use iliad_speech_to_text to transcribe audio back to text. Requires Authorization: Bearer <api_key>.

    Annotations the server declares

    • title: Text-to-Speech
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
  • iliad_vector_databaseAXIS-owned vector store.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    AXIS-owned vector store. Two operations: `upsert` (insert or replace vectors) and `query` (cosine top-k nearest neighbors). Namespaces are account-scoped server-side (`acct:<account_id>:<namespace>`), so tenants cannot read each other's vectors. Persistent across restarts via Postgres. Requires Authorization: Bearer <api_key>. Pricing: $0.01 standard, free in lite mode. Best for RAG retrievers, deduplication, and similarity search. Use iliad_embeddings to turn text into the vectors this tool stores and queries. Engineer mode (X-Agent-Mode: engineer — Managed Memory, $0.05): query runs a pgvector/HNSW ANN candidate pool with optional recency-decay reranking (recency_half_life_days — managed forgetting), RRF hybrid fusion (sparse_ids), and metadata filter; upsert applies intra-batch semantic-dedup (dedup_threshold).

    Annotations the server declares

    • title: Vector Database
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • iliad_web_researchScrape a single URL with AXIS's owned crawler (SSRF-guarded fetch, robots.txt-aware, readability extraction — no third-party key) and return markdown-formatted content.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Scrape a single URL with AXIS's owned crawler (SSRF-guarded fetch, robots.txt-aware, readability extraction — no third-party key) and return markdown-formatted content. Honest scope: fetches static HTML only, no JavaScript rendering, so client-rendered SPA pages may extract thin content. Returns markdown body, extracted metadata, and title. Best for research, documentation reading, or SEO analysis. Requires Authorization: Bearer <api_key>. Pricing: $0.10 per page. Lite mode carries no discount here — the markdown output is identical in both modes. If the operator's backend configuration is incomplete, this call returns {_not_configured:true} instead of scraping, and is not billed. Use iliad_web_research_crawl for crawling multiple pages or link following. To make a scraped page searchable later, index it with iliad_web_search.

    Annotations the server declares

    • title: Web Research
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
  • iliad_web_research_crawlCrawl a domain with AXIS's owned crawler — a same-origin BFS frontier with robots.txt compliance and per-host politeness, no third-party key — and scrape multiple pages.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Crawl a domain with AXIS's owned crawler — a same-origin BFS frontier with robots.txt compliance and per-host politeness, no third-party key — and scrape multiple pages. Honest scope: static HTML only, no JavaScript rendering. Returns array of scraped pages with markdown content. Best for site mapping, content audits, or bulk research. Requires Authorization: Bearer <api_key>. Pricing: $0.01/page beyond your account's shared 100-page/month free pool (standard and lite) — a crawl fully covered by the free pool costs $0.00; a fully-paid 100-page crawl costs up to $1.00. If the operator's backend configuration is incomplete, this call returns {_not_configured:true} instead of crawling, and is not billed. Use iliad_web_research for single-page scrapes. To make crawled pages searchable later, index them with iliad_web_search.

    Annotations the server declares

    • title: Web Research (Crawl)
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
  • improve_my_agent_with_axisAnalyze an agent codebase and return a prioritized AXIS hardening plan.1 finding

    Why it is in this group

    • The description's first verb is "analyze": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "improve_my_agent_with_axis" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}; The description's first verb is "analyze": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Analyze an agent codebase and return a prioritized AXIS hardening plan. Requires Authorization: Bearer <api_key> but has no usage charge on any tier — free and unmetered, unlike most AXIS tools. This creates a snapshot and may return auth, quota, file-limit, or validation errors. Example: pass your agent source files to see missing AGENTS.md, CLAUDE.md, and MCP config gaps. Use this when you want recommendations and missing-context detection. Use analyze_files instead when you want the full artifact bundle directly (paid: $3.00 standard).

    Annotations the server declares

    • title: Improve My Agent With Axis
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • ping_paymentExercise the real x402 payment-flow loop at a nominal $0.01 — the cheapest metered call on this server, priced just above $0 so the probe can't be run up for free without limit.3 findings

    Why it is in this group

    • The name "ping_payment" says "ping": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...out limit. Call it once with no payment credential (no auth required) to receive a 402-sty..."

      What this check looks for
    • Warn

      The description contains "any other tool", wording about other tools or servers.

      Matched text

      description: "...ing or analyze_repo. No side effects on any other tool, no real payment rail is ever touched."

      What this check looks for
    • Warn

      The server marks "ping_payment" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}; The name "ping_payment" says "ping": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Exercise the real x402 payment-flow loop at a nominal $0.01 — the cheapest metered call on this server, priced just above $0 so the probe can't be run up for free without limit. Call it once with no payment credential (no auth required) to receive a 402-style payment_required challenge (the exact same shape every real paid tool returns, and requesting it is itself free); retry the same tools/call carrying a payment credential in Authorization (with your API key moved to X-Axis-Key) to settle at $0.01 and get a success envelope. Learn the vocabulary here before paying real money for prepare_agentic_purchasing or analyze_repo. No side effects on any other tool, no real payment rail is ever touched.

    Annotations the server declares

    • title: Ping Payment (x402 Probe)
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
  • prepare_agentic_purchasingPrepare a codebase for agentic purchasing and return a readiness score plus commerce artifacts.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Prepare a codebase for agentic purchasing and return a readiness score plus commerce artifacts. Requires Authorization: Bearer <api_key>; paid analysis records a new snapshot and may return auth, quota, payment, file-limit, or validation errors. Pricing: $3.00 standard, $1.00 lite budget mode, $250 engineer per run. Lite mode returns the readiness score + top 3 gaps only, with an artifacts_note pointing at standard mode for the full artifact bundle — it does NOT include the artifacts themselves. Standard and engineer modes return the full bundle. focus_areas is recorded and echoed back in the response for the caller's own bookkeeping; it does not filter which artifacts are generated. Use this when you need AP2/UCP/Visa, CE 3.0 dispute evidence, checkout, dispute, and negotiation hardening. Engineer mode (X-Agent-Mode: engineer — Commerce Integration) also emits a deployable x402/AP2/PAI'D endpoint + a runnable sandbox test + a schema-validatable CE 3.0 pack + a transparent dispute-readiness score (a working integration, not just a score), plus a deployable Stripe network-token read adapter when a stripe signal is detected. Use discover_agentic_purchasing_needs instead when you only need workflow triage.

    Annotations the server declares

    • title: Prepare Agentic Purchasing
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • roblox_compliance_checkRun Roblox R15 compliance checks against a mesh.No findings

    Why it is in this group

    • The description's first verb is "run": a word for a change.
    Description, as the server wrote it
    Run Roblox R15 compliance checks against a mesh. Status: **planned_proxy** — an estate-flagged proxy is planned (see discover_estate_tools for the sibling's own direct endpoint and price today). Calls return a planned-capability envelope pointing at AXIS Foundry (https://api.avatar.jonathanarvay.com/mcp) as the recommended interim provider. When the estate proxy ships, the dispatch handler swaps in without changing this schema.

    Annotations the server declares

    • title: Roblox R15 Compliance Check (Foundry, planned proxy)
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • sca_exemption_decisionDecide the lighter-SCA path for a single transaction using AXIS's published 7-priority PSD2 exemption matrix (the same decideScaExemption engine that renders the SCA Exemption Deci…1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Info

      The input schema at properties.is_merchant_initiated.description mentions "credential".

      Matched text

      inputSchema.properties.is_merchant_initiated.description: "MIT with stored credential + original SCA reference (out of SCA sc..."

      What this check looks for
    Description, as the server wrote it
    Decide the lighter-SCA path for a single transaction using AXIS's published 7-priority PSD2 exemption matrix (the same decideScaExemption engine that renders the SCA Exemption Decision Matrix in generated artifacts). Input: amount_eur (required, PSD2 thresholds are EUR-denominated — convert before calling) plus optional context flags (secure corporate program, MIT, fixed recurring + prior SCA, trusted beneficiary + prior SCA, one-leg-out, acquirer TRA fraud rate in basis points). Returns the chosen exemption, its priority, sca_required, rationale, fallback path, all applicable candidates, the rendered priority matrix, and a sha256 reproducibility proof. Free, no auth, deterministic, no side effects. HONESTY: decision-support only, NOT an authorization oracle — final exemption eligibility is decided by the acquirer/issuer; TRA caps use published EBA RTS Art. 15 bands, not your acquirer's live fraud rate.

    Annotations the server declares

    • title: SCA Exemption Decision
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • score_dispute_readinessScore how ready a disputed transaction's EVIDENCE FILE is for representment, per Visa reason-code family, using the transparent scoreWinProbability heuristic (win-prob-v0: hand-set…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Score how ready a disputed transaction's EVIDENCE FILE is for representment, per Visa reason-code family, using the transparent scoreWinProbability heuristic (win-prob-v0: hand-set, documented logistic coefficients — exported, inspectable, monotonic in evidence). Input: reason_code + the evidence on file (CE 3.0 eligibility, matching data elements, prior undisputed transactions, delivery proof, AVS/CVV, 3DS, signed mandate, customer communication). Returns the heuristic score, band, top missing evidence (what to capture next), recommended action, rationale, model version, and a sha256 reproducibility proof. Free, no auth, deterministic. HONESTY (read this): this scores evidence-capture readiness and is NOT a dispute-win prediction — the v0 heuristic is NOT empirically calibrated against real network outcomes, is NOT a Visa-published or Visa-endorsed win rate, and AXIS does not publish win-rate estimates. Treat it as a prioritization signal for evidence gathering only; always follow your operator's dispute policy.

    Annotations the server declares

    • title: Score Dispute Evidence Readiness
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
Only reads 7Claude Code: allow
  • build_ap2_mandateValidate, canonically encode, and optionally Ed25519-sign an AP2 mandate (Intent / Cart / Payment) using the real @axis/ap2 codecs — schema validation (including cart-total arithme…No findings

    Why it is in this group

    • The description's first verb is "validate": a word for reading.
    Description, as the server wrote it
    Validate, canonically encode, and optionally Ed25519-sign an AP2 mandate (Intent / Cart / Payment) using the real @axis/ap2 codecs — schema validation (including cart-total arithmetic and intent cross-references), RFC 8785 JCS-style canonical JSON encoding, and detached-JWS EdDSA signing over node:crypto. Pass seed_hex (64 hex chars = 32 bytes) to sign deterministically client-side-supplied key material — AXIS stores no keys; omit it for an unsigned template with encoding only. The signed envelope round-trips through verifyMandate before it is returned. Free, no auth, deterministic (Ed25519 signatures are deterministic per RFC 8032), no side effects. SCOPE HONESTY: conformant to AXIS's TypeScript encoding of the public AP2 mandate schema, verified against self-authored golden vectors — NOT certified against an official AP2 conformance suite or a live network counterparty.

    Annotations the server declares

    • title: Build AP2 Mandate
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • discover_estate_toolsList sibling AXIS properties (payments via PAI'D, 3D avatar generation via AXIS Foundry, and more) — each entry gives its own MCP endpoint, auth mode, and vendored tool prices, so …No findings

    Why it is in this group

    • The description's first verb is "list": a word for reading.
    Description, as the server wrote it
    List sibling AXIS properties (payments via PAI'D, 3D avatar generation via AXIS Foundry, and more) — each entry gives its own MCP endpoint, auth mode, and vendored tool prices, so you can call them directly. Free, no auth, no side effects. Same data as GET /.well-known/axis-estate.json. Use this when the task needs a capability Iliad itself does not own (e.g. payment execution, 3D asset generation).

    Annotations the server declares

    • title: Discover Estate Tools
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • get_artifactRead one generated artifact by snapshot_id and path.No findings

    Why it is in this group

    • The name "get_artifact" says "get": a word for reading.
    Description, as the server wrote it
    Read one generated artifact by snapshot_id and path. Requires access to the snapshot and may return snapshot-not-found, invalid-path, or artifact-not-found errors. Example: snapshot_id=abc-123, path=AGENTS.md. Use this when you need the full text of one artifact. Use get_snapshot instead when you first need the artifact list.

    Annotations the server declares

    • title: Get Artifact
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • get_install_manifestGet AXIS install metadata, pricing, and a shareable manifest for onboarding a new integration — MCP endpoint, per-client config for Claude Desktop/Cursor/VS Code, and the full tool…No findings

    Why it is in this group

    • The name "get_install_manifest" says "get": a word for reading.
    Description, as the server wrote it
    Get AXIS install metadata, pricing, and a shareable manifest for onboarding a new integration — MCP endpoint, per-client config for Claude Desktop/Cursor/VS Code, and the full tool catalog with pricing. Free, no auth, and no mutation beyond read access. Example: call before wiring AXIS into an MCP client for the first time. Use this when you need setup/ecosystem details, not tool discovery. Use search_and_discover_tools instead for keyword routing across programs, or discover_agentic_purchasing_needs for purchasing-task triage.

    Annotations the server declares

    • title: Get Install Manifest
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • list_programsInventory mode.No findings

    Why it is in this group

    • The name "list_programs" says "list": a word for reading.
    Description, as the server wrote it
    Inventory mode. List all 21 AXIS programs, their generators, pricing tier, and artifact paths. Free, no auth, and no side effects. Use search_and_discover_tools instead when you only have a keyword, or get_install_manifest when you need install and onboarding metadata.

    Annotations the server declares

    • title: List Programs
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • prepare_agentic_purchasing_previewCompute a free Purchasing Readiness Score (0-100) and gap list for a codebase without generating artifacts.No findings

    Why it is in this group

    • The name "prepare_agentic_purchasing_preview" says "preview": a word for reading.
    Description, as the server wrote it
    Compute a free Purchasing Readiness Score (0-100) and gap list for a codebase without generating artifacts. No auth, no charge, no snapshot persisted. Hard caps: 25 files / 50KB per file / 1MB total. Returns score, risk_level, top gaps, frameworks detected, and which AXIS programs would close which gaps. Use this to triage 'should I pay for the full hardening bundle?' before calling prepare_agentic_purchasing. The paid version generates the full artifact bundle including CE 3.0 dispute evidence, SCA exemption matrix, and TAP interop.

    Annotations the server declares

    • title: Preview Purchasing Readiness
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • search_and_discover_toolsSearch AXIS programs by keyword and return ranked matches with artifact paths.No findings

    Why it is in this group

    • The name "search_and_discover_tools" says "search": a word for reading.
    Description, as the server wrote it
    Search AXIS programs by keyword and return ranked matches with artifact paths. Free, no auth, and no stateful side effects. Example: q=checkout returns commerce-relevant programs first. Use this when you know the outcome you want but not the right program. Use list_programs instead for the full catalog, get_install_manifest for install metadata, or discover_agentic_purchasing_needs for purchasing-specific triage.

    Annotations the server declares

    • title: Search And Discover Tools
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.5.4. Values in angle brackets are yours to fill in.

claude mcp add --transport http axis-toolbox https://api.iliad.trustfabric.ai/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__axis-toolbox__list_programs",
      "mcp__axis-toolbox__get_artifact",
      "mcp__axis-toolbox__prepare_agentic_purchasing_preview",
      "mcp__axis-toolbox__search_and_discover_tools",
      "mcp__axis-toolbox__get_install_manifest",
      "mcp__axis-toolbox__discover_estate_tools",
      "mcp__axis-toolbox__build_ap2_mandate"
    ],
    "ask": [
      "mcp__axis-toolbox__analyze_repo",
      "mcp__axis-toolbox__analyze_files",
      "mcp__axis-toolbox__get_snapshot",
      "mcp__axis-toolbox__prepare_agentic_purchasing",
      "mcp__axis-toolbox__closer",
      "mcp__axis-toolbox__deploy",
      "mcp__axis-toolbox__ping_payment",
      "mcp__axis-toolbox__improve_my_agent_with_axis",
      "mcp__axis-toolbox__discover_agentic_purchasing_needs",
      "mcp__axis-toolbox__get_referral_code",
      "mcp__axis-toolbox__get_referral_credits",
      "mcp__axis-toolbox__iliad_web_research",
      "mcp__axis-toolbox__iliad_web_research_crawl",
      "mcp__axis-toolbox__iliad_vector_database",
      "mcp__axis-toolbox__iliad_embeddings",
      "mcp__axis-toolbox__iliad_transactional_email",
      "mcp__axis-toolbox__iliad_llm_inference",
      "mcp__axis-toolbox__iliad_code_sandbox",
      "mcp__axis-toolbox__iliad_document_parsing",
      "mcp__axis-toolbox__iliad_text_to_speech",
      "mcp__axis-toolbox__iliad_speech_to_text",
      "mcp__axis-toolbox__iliad_analytics",
      "mcp__axis-toolbox__axis_validate",
      "mcp__axis-toolbox__axis_inspect",
      "mcp__axis-toolbox__axis_compare",
      "mcp__axis-toolbox__axis_manifest_verify",
      "mcp__axis-toolbox__roblox_compliance_check",
      "mcp__axis-toolbox__iliad_hygiene",
      "mcp__axis-toolbox__sca_exemption_decision",
      "mcp__axis-toolbox__grade_compliance",
      "mcp__axis-toolbox__assemble_ce3_evidence",
      "mcp__axis-toolbox__score_dispute_readiness",
      "mcp__axis-toolbox__assemble_representment",
      "mcp__axis-toolbox__iliad_network_tokenization"
    ],
    "deny": [
      "mcp__axis-toolbox__delete_snapshot",
      "mcp__axis-toolbox__iliad_object_storage",
      "mcp__axis-toolbox__iliad_web_search"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as axis-toolbox. Review it before you use it.