Agenten's picture
Upload 3 files
fa9e023 verified
Raw
History Blame Contribute Delete
7.7 kB
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>AI Interoperability Checker</title>
<meta name="description" content="Choose an AI integration pattern and get a practical interoperability path, key protocol layer and implementation checks."><style>
:root{--bg:#f5fbff;--panel:#ffffff;--ink:#10243e;--muted:#60758d;--line:#d9eaf5;--accent:#087fce;--accent2:#00b8c9;--soft:#eaf7ff;--good:#16784b;--warn:#9a6500}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:radial-gradient(circle at top left,#fff 0,#eef9ff 32%,#f7fbff 72%);color:var(--ink)}
a{color:var(--accent)}button,select,input{font:inherit}.shell{max-width:1180px;margin:auto;padding:28px 20px 70px}.hero{padding:44px 0 28px}.eyebrow{text-transform:uppercase;letter-spacing:.15em;font-weight:800;font-size:.76rem;color:var(--accent)}h1{font-size:clamp(2.4rem,6vw,5rem);line-height:.96;letter-spacing:-.05em;margin:.22em 0}.sub{max-width:790px;color:#3f5873;font-size:1.13rem;line-height:1.65}.bar{display:flex;gap:12px;flex-wrap:wrap;margin:22px 0}.control{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:12px 14px;color:var(--ink);min-width:180px}.btn{border:0;border-radius:14px;padding:12px 16px;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;font-weight:800;cursor:pointer}.ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}.card{background:rgba(255,255,255,.94);border:1px solid var(--line);border-radius:20px;padding:20px;box-shadow:0 12px 38px rgba(53,101,139,.08)}.card h3{margin:.2rem 0 .55rem}.tag{display:inline-block;font-size:.75rem;font-weight:800;padding:5px 8px;border-radius:999px;background:var(--soft);color:#17628e;margin:2px 4px 2px 0}.meta{color:var(--muted);font-size:.9rem;line-height:1.55}.section{margin-top:34px}.section h2{font-size:1.8rem;letter-spacing:-.025em}.tablewrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:20px}table{border-collapse:collapse;width:100%;min-width:800px}th,td{text-align:left;padding:13px 14px;border-bottom:1px solid #edf3f7;vertical-align:top}th{font-size:.78rem;text-transform:uppercase;letter-spacing:.07em;color:#557089;background:#f8fcff}.note{padding:16px 18px;background:#fff;border-left:4px solid var(--accent2);border-radius:10px;line-height:1.6;color:#425c75}.footer{margin-top:42px;padding-top:22px;border-top:1px solid var(--line);color:var(--muted);font-size:.9rem}
.kpi{font-size:1.8rem;font-weight:900;letter-spacing:-.04em}.hidden{display:none!important}
@media(max-width:650px){.shell{padding:20px 14px 52px}.hero{padding-top:28px}.control{width:100%}.bar{display:grid}.card{border-radius:16px}}
.result{display:grid;grid-template-columns:1.1fr .9fr;gap:18px}.heroResult{font-size:2.2rem;font-weight:900;letter-spacing:-.04em}ul{line-height:1.8;padding-left:1.3rem}@media(max-width:760px){.result{grid-template-columns:1fr}}
</style></head><body><main class="shell"><section class="hero"><div class="eyebrow">Architecture helper</div><h1>Interoperability Checker</h1>
<p class="sub">Select the boundary you need to connect. The checker identifies the most relevant interoperability layer, likely protocol family and the implementation questions that matter.</p>
<div class="bar"><select id="pattern" class="control"><option value="agent-tool">Agent ↔ Tool</option><option value="agent-agent">Agent ↔ Agent</option><option value="agent-api">Agent ↔ Existing API</option><option value="model-provider">Application ↔ Model Provider</option><option value="data-system">AI System ↔ Data System</option><option value="physical-ai">Agent ↔ Physical System</option></select><button class="btn" id="go">Analyze boundary</button></div></section>
<section id="out" class="result"></section>
<section class="section"><div class="note"><b>Important:</b> this checker recommends an interoperability pattern, not a universal protocol winner. Real architectures frequently combine A2A, MCP, OpenAPI, structured schemas, authorization and observability.</div></section>
<footer class="footer">Educational architecture guidance; verify implementation details against current official specifications. · <a href="mailto:agenten@magenta.de">Collaboration contact</a></footer></main>
<script>
const PATHS={"agent-tool": {"title": "Agent ↔ Tool", "primary": "MCP", "secondary": "OpenAPI / typed schemas for existing APIs", "why": "Use a tool-oriented protocol when an agent needs discoverable, structured access to external capabilities.", "checks": ["Machine-readable tool schema", "Authentication and scoped permissions", "Structured error responses", "Timeout/retry semantics", "Traceable tool calls"]}, "agent-agent": {"title": "Agent ↔ Agent", "primary": "A2A", "secondary": "MCP may still be used by either agent for tools", "why": "Independent agents need capability discovery, task/message semantics and collaboration across implementation boundaries.", "checks": ["Capability discovery", "Task lifecycle", "Identity and authorization", "Structured messages", "Handoff and failure semantics"]}, "agent-api": {"title": "Agent ↔ Existing API", "primary": "OpenAPI + authorization", "secondary": "Expose as MCP when reusable AI-native tool access is desired", "why": "Existing HTTP APIs are often the shortest path to enterprise interoperability.", "checks": ["Accurate OpenAPI description", "JSON schemas", "Authentication/authorization", "Idempotency and retries", "Rate limits and errors"]}, "model-provider": {"title": "Application ↔ Model Provider", "primary": "Provider abstraction layer", "secondary": "Standardized messages, tool calls and structured outputs", "why": "Model portability depends on normalizing interfaces without hiding meaningful capability differences.", "checks": ["Message compatibility", "Streaming semantics", "Tool-call translation", "Multimodal support", "Fallback/routing strategy"]}, "data-system": {"title": "AI System ↔ Data System", "primary": "Explicit schema + metadata contract", "secondary": "API/tool protocol on top as appropriate", "why": "Syntactic JSON compatibility is not enough; systems must preserve meaning, types, provenance and permissions.", "checks": ["Schema versioning", "Stable identifiers", "Provenance", "Access policy", "Semantic consistency"]}, "physical-ai": {"title": "Agent ↔ Physical System", "primary": "Typed control interface + strong validation", "secondary": "MCP/API layers can expose high-level capabilities", "why": "Physical systems require stricter timing, safety, permissions and state semantics than ordinary software tools.", "checks": ["Safety envelope", "Real-time constraints", "Sensor/action schemas", "Failsafe behavior", "Audit and observability"]}};const out=document.getElementById('out'), sel=document.getElementById('pattern');
function esc(s){return String(s).replace(/[&<>"']/g,m=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#039;'}[m]));}
function show(){const x=PATHS[sel.value];out.innerHTML=`<article class="card"><div class="tag">Recommended primary layer</div><div class="heroResult">${esc(x.primary)}</div><p>${esc(x.why)}</p><p class="meta"><b>Often paired with:</b> ${esc(x.secondary)}</p></article><article class="card"><h3>Implementation checks</h3><ul>${x.checks.map(c=>`<li>${esc(c)}</li>`).join('')}</ul></article>`;}
document.getElementById('go').addEventListener('click',show);sel.addEventListener('change',show);show();
</script></body></html>