Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Agent Hub - AI-operated public sandbox: demo data, simulated payments, no real bookings

REMOTE · HUB.VIDETION.COM

Agent-to-business commerce sandbox: intents, offers, bookings. Demo data, ed25519-signed calls.

Available components

−63 this week 0 Trust /100

Last scanned (52 days ago)

Scores higher than 0% of remote servers

Unreachable for 7 days in a row. Last reached 7 Sep 2026.

Category E-commerce

Dead

Every channel of this server has been unreachable for long enough to be marked dead. Its trust score is pinned to 0 and does not recover automatically: even once the server responds again it stays dead until it is manually reinstated.

Recent critical change

TLS certificate (13 Sept 2026). See the changelog before you install this server.

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security0
Transport & Reachability0
Schema Quality & AI Usability0
  • Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.Unverified
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
  • Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.Unverified
Tool Safety0
  • Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.Unverified
Capabilities0
  • Capabilities not yet verified: we couldn't read the endpoint's capabilities.Unverified

Unverified: 5 categories

Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

What we tested

Checks we ran (3)

  • TLS certificate
  • DNSSEC
  • Transport

Checks we could not complete (8)

These are gaps on our side, not findings about this hosted endpoint. We only credit what we can confirm, so a category made up entirely of them scores 0.

  • Authorization in Endpoint SecurityAuthorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  • HTTPS in Endpoint SecurityHTTPS enforcement could not be verified: the plaintext port answered with HTTP 404, which proves neither a plaintext path nor enforcement.
  • HSTS header in Endpoint SecurityHSTS not yet verified: we couldn't read the response headers to check for it.
  • Schema quality in Schema Quality & AI Usability (scores 0 for this)Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.
  • Stability in Stability & Change Management (scores 0 for this)Stability not yet verified: not enough scan history yet (needs a 30-day window).
  • Tool coverage in Tool Coverage (scores 0 for this)Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
  • Tool safety in Tool Safety (scores 0 for this)Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
  • Capabilities in Capabilities (scores 0 for this)Capabilities not yet verified: we couldn't read the endpoint's capabilities.

Does not apply to this hosted endpoint (2)

  • Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
  • Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.

The score does not measure everything. What the score does not measure →

Registry listing versus package

Where what the registry lists and what we observed about the package disagree. This is read from the stored diagnostics and is never an input to the score.

  • TLS certificate hostname

    Registry says
    https://hub.videtion.com/mcp
    Package shows
    Certificate names 048685927615aeaacd47f51ea7e786f7.ea552c7699b86e46cbe0aabd47f2436f.traefik.default

    The certificate does not name the host we connected to. See the evidence →

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 14 Sept 26 −13

    The score moved with no change recorded against any check. We would rather say so than guess.

  • 13 Sept 26 −12
    • TLS certificate: unverified → fail ▼ critical
    • Score status: scored → failed ▼ critical
    • HTTPS: pass → unverified ▼ security
    • Transport: Transport check failed: declared streamable-http, but the TLS certificate failed verification. security
  • 12 Sept 26 −13

    The score moved with no change recorded against any check. We would rather say so than guess.

  • 11 Sept 26 −12

    The score moved with no change recorded against any check. We would rather say so than guess.

  • 10 Sept 26 −13

    The score moved with no change recorded against any check. We would rather say so than guess.

  • 8 Sept 26 0
    • Endpoint reachability: reachable → unreachable ▼ security
    • Stability: fail → unverified ▼ security
    • HSTS header: fail → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • TLS certificate: pass → unverified ▼ security
    • Transport: pass → fail ▼ security
    • Authorization: Authorisation not yet verified: we couldn't confirm whether this endpoint requires it. security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • First check of Schema quality: unverified functional
  • 7 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 15 to 18.

  • 5 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 8 to 11.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 14 Sept 2026 · Probed https://hub.videtion.com/mcp

TLS invalid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Chain error: Hostname mismatch

Subject Issuer Valid from Valid until Key Signature Serial
CN=TRAEFIK DEFAULT CERT CN=TRAEFIK DEFAULT CERT 13 Sept 2026 13 Sept 2027 RSA 2048 SHA256-RSA df3f71057ba4af9afe6804c75285fc18
SANs: 048685927615aeaacd47f51ea7e786f7.ea552c7699b86e46cbe0aabd47f2436f.traefik.default

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of hub.videtion.com. — Not signed

Zone DS Keys Algorithms Outcome
. Trust anchor 20326, 38696 8, 8 Verified
com. DS published 19718 13 Verified
videtion.com. No DS Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Inconclusive

We could not reach the endpoint well enough to judge its authorisation posture.

Result Inconclusive

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://hub.videtion.com/mcp TLS failed
http (plaintext) http://hub.videtion.com/mcp Inconclusive 404
MCP tools · 6 exposed · ~5,899 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
approve_pending ~747

STEP 5b, SELLER-SIDE, only when confirm_booking answered PENDING_APPROVAL. This tool IS the granting act: it approves and settles the booking into its final state. payload = { approval_id } (from the confirm_booking response). Only an agent whose business_id matches the approval may call it — a buyer passport gets 403 "not your business to approve", so a self-registered agent cannot use this tool. REACHABILITY, said here because a list of six tools otherwise reads as six steps you can take: NO agent you can obtain on this hub today can call this one. TWO independent reasons, either one of which is enough: self-registration provisions full autonomy (an empty require_approval), so confirm_booking never answers PENDING_APPROVAL to an agent registered here and the approval_id this tool takes is never minted for your bookings; and self-registration refuses business_id with a 403, and this sandbox hands out no business passport, so no key you can obtain here matches an approval. It is published to document the shape of the protocol — the seller half exists and is exercised by operator-issued business passports — not as a step in the buy flow: the flow you can actually run ends at confirm_booking. SIDE EFFECTS: activates booking, payment and slot; returns { ok, booking_id, payment_status }. Sandbox covers the MONEY here, not only the goods: no payment processor is connected, so nothing on this hub moves funds and no card or account of yours is ever touched. Of the 5 payment states it publishes, exactly 1 can ever reach you — funds simulated as escrowed — and the other 4 never ride this field, 3 of them being vocabulary in the enum rather than behaviour today, so no settlement follows this call. Those names are deliberately NOT repeated here: they name states of the payment, and this description is where you read your own booking status, which is exactly where a foreign state literal gets misread. https://hub.videtion.com/spec §5 tables all 5 and says, for each, whether sh…

NameTypeReqDescription
agent_idstringyesThe agent_id returned by register_agent. Call that tool first; it is the only one needing no credentials.
noncestringyesSingle-use random string, 1..256 chars (32 hex recommended). A nonce this agent has used before is rejected as a replay (401).
payloadobjectyesCovered by the signature.
signaturestringyesHex-encoded ed25519 signature over the RFC 8785 (JCS) canonical JSON of exactly {payload, agent_id, nonce, timestamp} — the whole envelope minus this field. Sign with the private key matching the pub…
timestampintegeryesEpoch MILLISECONDS (Date.now()), not seconds. Must be within +/-60 s of server time, else 401 stale timestamp.

No output schema declared.

No examples provided.

confirm_booking ~791

STEP 5, the committing call — turns a hold into a booking. payload = { hold_id } (from hold_slot). Your envelope signature IS the buyer signature on the resulting booking, so this is a non-repudiable act: do not call it speculatively. SIDE EFFECTS: returns { ok, status, booking_id, payment_status } with status "BOOKED", or { ok, status, booking_id, approval_id } with status "PENDING_APPROVAL" (no payment_status on that branch) when the BUYER's own policy requires a human for booking.confirm (it is the buyer policy that decides, not the shop). Sandbox covers the MONEY here, not only the goods: no payment processor is connected, so nothing on this hub moves funds and no card or account of yours is ever touched. Of the 5 payment states it publishes, exactly 1 can ever reach you — funds simulated as escrowed — and the other 4 never ride this field, 3 of them being vocabulary in the enum rather than behaviour today, so no settlement follows this call. Those names are deliberately NOT repeated here: they name states of the payment, and this description is where you read your own booking status, which is exactly where a foreign state literal gets misread. https://hub.videtion.com/spec §5 tables all 5 and says, for each, whether shipped code can produce it. What IS real is the record: the payment row and its booking are written to this hub’s database and outlive the call. Agents that register here are provisioned at full autonomy, so every confirm that SUCCEEDS ends at BOOKED: the PENDING_APPROVAL branch above is not merely unlikely for you, it is UNREACHABLE from self-registration, and approve_pending has no caller you can become (its own description carries the full reason). That is a claim about the approval branch only — a confirm can still fail, see ERRORS below. Requires the booking.confirm capability. ERRORS: over your daily booking cap this answers 429 "reservations_per_day exceeded" — YOUR counter, cleared at midnight UTC, so wait rather than retry, and do not tak…

NameTypeReqDescription
agent_idstringyesThe agent_id returned by register_agent. Call that tool first; it is the only one needing no credentials.
noncestringyesSingle-use random string, 1..256 chars (32 hex recommended). A nonce this agent has used before is rejected as a replay (401).
payloadobjectyesCovered by the signature.
signaturestringyesHex-encoded ed25519 signature over the RFC 8785 (JCS) canonical JSON of exactly {payload, agent_id, nonce, timestamp} — the whole envelope minus this field. Sign with the private key matching the pub…
timestampintegeryesEpoch MILLISECONDS (Date.now()), not seconds. Must be within +/-60 s of server time, else 401 stale timestamp.

No output schema declared.

No examples provided.

hold_slot ~865

STEP 4. Reserves the slot behind an offer so nobody else takes it while you decide. payload = { offer_id } (from list_offers). SIDE EFFECTS: takes exclusive, EXPIRING ownership of a real inventory slot — returns { ok, hold_id, resource_slot_id }. "Real" there is about the CONTENTION, not about the world: the grab is atomic, so one caller wins the slot and every other agent asking for the same one is refused until your hold lapses. The calendar it comes from is seeded by this organization for its demo businesses, so nothing outside this hub is reserved and no real business loses an appointment — the cost of a speculative hold is paid by other agents here. THE RESPONSE CARRIES NO EXPIRY FIELD: the hold TTL is a fixed 15 minutes counted from your call, so track it yourself. The expires_at you saw in list_offers belongs to the OFFER, not to this hold. Let the hold lapse and the slot returns to the pool; this is not yet a booking. A HOLD IS NOT CAPPED BY YOUR DAILY BOOKING LIMIT, so this can keep returning 200 to an agent that confirm_booking is already refusing — taking one then buys you nothing and parks a real slot. DO NOT BLINDLY RETRY A 409 HERE: 6 different conflicts reach it, they need OPPOSITE actions, and they fall into 3 groups. [2 YOU OWN IT] you already own the thing you are asking for and the error body carries your OWN hold_id or booking_id — the only route back to it, since no tool reads a hold or a booking back; holding another slot pins a second one, or books and charges a second one. [2 SLOT NOT FREE] the slot is not free for a reason outside this offer, and nothing of yours is held or charged — one of the two clears itself within seconds (retry the SAME offer_id), the other never does (hold a DIFFERENT offer from the list you already have; do NOT send a new intent for it). [2 OFFER LEVEL] the offer itself cannot be held, and list_offers keeps returning it — expired and slotless offers are never dropped from that list, so re-reading it loops forever an…

NameTypeReqDescription
agent_idstringyesThe agent_id returned by register_agent. Call that tool first; it is the only one needing no credentials.
noncestringyesSingle-use random string, 1..256 chars (32 hex recommended). A nonce this agent has used before is rejected as a replay (401).
payloadobjectyesCovered by the signature.
signaturestringyesHex-encoded ed25519 signature over the RFC 8785 (JCS) canonical JSON of exactly {payload, agent_id, nonce, timestamp} — the whole envelope minus this field. Sign with the private key matching the pub…
timestampintegeryesEpoch MILLISECONDS (Date.now()), not seconds. Must be within +/-60 s of server time, else 401 stale timestamp.

No output schema declared.

No examples provided.

list_offers ~770

STEP 3. Reads the offers sellers made against your own intent, cheapest first. payload = { intent_id } (the id returned by send_intent). Read-only, no side effects. You can only list offers on intents your own agent created. Returns { ok, offers }; when offers is empty the key no_offer_reasons is added beside it — it never replaces offers. EVERY offer carries all nine of: offer_id (what hold_slot takes), intent_id (the intent it answers), business_id and agent_id (WHO is selling — the shop and its seller agent; offers are NOT anonymous, so your own seller policy has something to key on), price, currency, slot ({ date, time }), expires_at (epoch ms — expired offers cannot be held, so read it before calling hold_slot), and seller_signature (the seller agent's ed25519 signature over the offer terms). WHO THE SHOP IS, said here because the sandbox note covers the INVENTORY and this field is the SELLER: every business behind these offers is today a fixture this organization wrote, so the shop is demo in the same sense the stock is, and "NOT anonymous" means the id is stable and attributable, not that a real company stands behind it. This hub has no claim endpoint: nothing in it can hand a profile to the person who owns the business. Its business tier (UNVERIFIED | DOMAIN_VERIFIED | BUSINESS_VERIFIED — a DIFFERENT field from the verification in your own passport, which is about you) has no value meaning "we put this profile here and its owner has not spoken". If a real business ever appears here it will be because this organization put it here from public sources, not because its owner asked; the rule is then that it takes no real booking and is deleted the same day its owner asks, and that request has no button and no address on this hub to send it to. So the id you are invited to key a seller policy on can be removed within a day, with no notice and no deprecation window — price that before you store it. This describes profiles published on this hub and makes no claim…

NameTypeReqDescription
agent_idstringyesThe agent_id returned by register_agent. Call that tool first; it is the only one needing no credentials.
noncestringyesSingle-use random string, 1..256 chars (32 hex recommended). A nonce this agent has used before is rejected as a replay (401).
payloadobjectyesCovered by the signature.
signaturestringyesHex-encoded ed25519 signature over the RFC 8785 (JCS) canonical JSON of exactly {payload, agent_id, nonce, timestamp} — the whole envelope minus this field. Sign with the private key matching the pub…
timestampintegeryesEpoch MILLISECONDS (Date.now()), not seconds. Must be within +/-60 s of server time, else 401 stale timestamp.

No output schema declared.

No examples provided.

register_agent ~1,634

STEP 1 of the buy flow, and the ONLY tool that needs no existing credentials — start here. Registers a new buyer agent by proof-of-possession: sign the envelope with the private key matching payload.public_key. payload = { public_key: <ed25519 public key, 64 hex chars>, principal?: { type?: "user", name?: string } }. SIDE EFFECTS: creates a persistent agent record and issues a passport valid 30 days; returns { ok: true, agent_id, passport }. That figure outlives its issuer: this hub is a time-boxed experiment running to 2026-09-12, nothing published here commits it to answering after that date, and a credential that has not expired is not evidence the endpoint answering it is still here — do not put this hub on a critical path. The run ending is not a deletion event: nothing you create here is removed on a schedule — the only two things that are (nonces after 10 minutes and rate_counters after 48 hours) are internal plumbing, not a privacy measure — and no path in the code removes the rest. What happens to those rows after 2026-09-12, when the scheduled run ends, is not decided and nothing published here commits us either way — treat anything you send as kept until you hear otherwise. WHAT THIS HUB KEEPS ABOUT YOU, said here because the sentence before it says how LONG things are kept and never says WHAT: 15 tables can hold something attributable to a caller, in three groups. Your account: your agent’s public key, a random agent_id, and the principal name you choose to send; the passport we issue you — capabilities, expiry, our signature; the permission row provisioned with your account. What you create in the sandbox: the intents you submit; which demo businesses each intent was dispatched to; the offers quoted back to you; the slot holds you take; the bookings you confirm; the simulated payment state of those bookings; approval requests raised for them. What any request leaves, whether or not you ever register: your User-Agent string as sent, per day and per path…

NameTypeReqDescription
agent_idstringyesYou do not have an agent_id yet — pass your public_key here. The value is ignored by registration, but it must be non-empty and must be the exact string you included when signing.
noncestringyesSingle-use random string, 1..256 chars (32 hex recommended). A nonce this agent has used before is rejected as a replay (401).
payloadobjectyesRegistration payload. Covered by the signature.
signaturestringyesHex-encoded ed25519 signature over the RFC 8785 (JCS) canonical JSON of exactly {payload, agent_id, nonce, timestamp} — the whole envelope minus this field. Sign with the private key matching the pub…
timestampintegeryesEpoch MILLISECONDS (Date.now()), not seconds. Must be within +/-60 s of server time, else 401 stale timestamp.

No output schema declared.

No examples provided.

send_intent ~1,092

STEP 2. States what you want to buy; sellers answer it with offers. Requires a registered agent_id. payload = a structured Intent: { type: string, location: string, product?: object, service?: string, availability?: { before?: string, after_time?: string }, budget?: { currency: <3-letter>, max: number } }. MATCHING: sellers quote off product.size — ONE string, e.g. "225/45 R18". An intent without it gets zero offers and a no_offer_reasons[].hint saying so; do not split the size into width/profile/diameter. The demo inventory answers this exact one: {"type":"car_tires","location":"Wroclaw","product":{"size":"225/45 R18","season":"winter","qty":4},"budget":{"currency":"PLN","max":800}}. SIDE EFFECTS: persists the intent and exposes it to seller agents for matching; returns { ok, intent_id }. Default limit: 100 intents/hour/agent. Natural-language intents are REST-only — MCP takes structured payloads. WHERE THAT REDIRECT SENDS YOUR TEXT, said here because the sentence before it points at the REST path and prices nothing: on that path your free text is forwarded verbatim — up to twice, because one retry is allowed — to a third-party LLM API at openrouter.ai, which routes it onward to google/gemini-2.5-flash-lite, so a second company reads it too. Not carried with it: your agent_id, your passport, public key, signature or nonce, your User-Agent or IP. No copy of the text itself is kept — only the structured intent it was turned into. Nothing you send over THIS transport is forwarded anywhere: it has no { nl } route, so no outbound request this hub makes is reachable from it. That covers calls this hub's process makes to hosts it does not run — not what the shared machine in front of it sees about your connection. WHAT THIS HUB KEEPS ABOUT YOU, said here because the sentence before it tells you where your User-Agent does NOT travel and no surface reachable from this one says we keep it: 15 tables can hold something attributable to a caller, in three groups. Your account:…

NameTypeReqDescription
agent_idstringyesThe agent_id returned by register_agent. Call that tool first; it is the only one needing no credentials.
noncestringyesSingle-use random string, 1..256 chars (32 hex recommended). A nonce this agent has used before is rejected as a replay (401).
payloadobjectyesA structured Intent. Covered by the signature.
signaturestringyesHex-encoded ed25519 signature over the RFC 8785 (JCS) canonical JSON of exactly {payload, agent_id, nonce, timestamp} — the whole envelope minus this field. Sign with the private key matching the pub…
timestampintegeryesEpoch MILLISECONDS (Date.now()), not seconds. Must be within +/-60 s of server time, else 401 stale timestamp.

No output schema declared.

No examples provided.

Install

How do I install the Agent Hub - AI-operated public sandbox: demo data… MCP server?

Agent Hub - AI-operated public sandbox: demo data… is a hosted endpoint at https://hub.videtion.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · hub.videtion.com

# add to Claude Code
claude mcp add --transport http com-videtion-hub-agent-hub 'https://hub.videtion.com/mcp'
Common questions

What is the Agent Hub - AI-operated public sandbox: demo data… MCP server?

Agent Hub - AI-operated public sandbox: demo data… is an MCP server listed in the public MCP registry as com.videtion.hub/agent-hub. Agent-to-business commerce sandbox: intents, offers, bookings. Demo data, ed25519-signed calls. This page covers its hosted endpoint (https://hub.videtion.com/mcp).

What tools does the Agent Hub - AI-operated public sandbox: demo data… MCP server expose?

Agent Hub - AI-operated public sandbox: demo data… exposes 6 tools: register_agent, send_intent, list_offers, hold_slot, confirm_booking, approve_pending. Their descriptions and schemas cost roughly 5,899 tokens of context every time the server is loaded.

Does the Agent Hub - AI-operated public sandbox: demo data… MCP server require authentication?

Its publisher declares no required credentials for Agent Hub - AI-operated public sandbox: demo data…. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

Is the Agent Hub - AI-operated public sandbox: demo data… MCP server still maintained?

Agent Hub - AI-operated public sandbox: demo data… has been unreachable for long enough that we treat it as dead, and its score is pinned to zero. We last reached this channel on 7 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.