# Void Apps (/docs/void-apps)



Void Apps are services published by developers and made available to buyers through the marketplace. The Voidnet routes buyer requests to the publisher's server, handling authentication, rate limiting, metering, and billing. Your code only talks to the gateway.

## App types [#app-types]

### MCP — AI Tools (available) [#mcp--ai-tools-available]

[Model Context Protocol](https://modelcontextprotocol.io) servers expose callable tools, data resources, and prompt templates. AI clients discover and invoke these tools at runtime. Protocol version `2026-07-28` (stateless).

An MCP server can expose:

* **Tools** — callable functions with typed JSON input schemas.
* **Resources** — URI-addressable data.
* **Prompts** — reusable prompt templates.

Available today: MCP and AI models. A2A 1.0 is `1.0` not yet, SLM not yet.

### A2A — AI Agents (not available) [#a2a--ai-agents-not-available]

[Agent-to-Agent Protocol](https://github.com/google/A2A) enables communication between autonomous AI agents. Protocol version `1.0`. Not yet supported.

### LLM — Language Model Integration (available) [#llm--language-model-integration-available]

Connect and query language model providers through a unified OpenAI-compatible interface. **Text output only** in V1 — no image, audio, or video. One model per app, token-metered (`usage.total_tokens`), billed per token. Host with vLLM/Ollama at `https://your-host` and expose `POST https://your-host/v1/chat/completions`. Example: `HuggingFaceTB/SmolLM2-135M-Instruct` on `http://localhost:6010/v1` or Ollama `http://localhost:11434/v1`.

### SLM — Specialized Language Models (not available) [#slm--specialized-language-models-not-available]

Smaller, domain-tuned language models. Not yet supported.

## How apps are consumed [#how-apps-are-consumed]

### MCP (stateless 2026-07-28) [#mcp-stateless-2026-07-28]

```
POST /v1-beta/mcp/{username}/{appname}
Authorization: Bearer vnb-sk-...          # API key
Authorization: Bearer eyJhbGciOiJSUzI1... # JWT access token

Headers:
  MCP-Protocol-Version: 2026-07-28
  Mcp-Method: tools/call
  Mcp-Name: get_forecast
```

### LLM (OpenAI compatible) [#llm-openai-compatible]

```
POST /v1-beta/llm/{username}/{appname}           # gateway
Authorization: Bearer vnb-sk-...                 # buyer key
Content-Type: application/json

Body: {"model":"Qwen/Qwen2.5-7B-Instruct","messages":[{"role":"user","content":"hi"}],"temperature":0.7,"max_tokens":64,"stream":false}

# With OpenAI SDK:
# from openai import OpenAI; client = OpenAI(base_url="https://api.openvoidnet.com/v1-beta/llm/{publisher}/{app}", api_key="vnb-sk-...")
# client.chat.completions.create(model="...", messages=[{"role":"user","content":"hi"}])
```

1. Browse the Marketplace and purchase an app (free tiers require clicking "Get").
2. Note the publisher's **username** and the app's **name**.
3. Send JSON-RPC 2.0 requests through the gateway.

**Stateless MCP 2026-07-28** — No sessions, no initialize handshake, no `Mcp-Session-Id` header, no GET/DELETE endpoints. SSE streams are per-request on POST; close = cancel.

The gateway accepts both API keys and JWT access tokens and auto-detects the credential type.

## How apps are published [#how-apps-are-published]

Publishers register their app, choose its type (`mcp` or `llm`), and provide their server URL (`https://host/v1` for LLM, `https://host/mcp` for MCP). The gateway stores the mapping between `username/appname` and the server. When a buyer makes a request, the gateway resolves the server URL, authenticates, validates the purchase, and proxies the request. LLM apps are one model per app — the published model ID must match the `model` buyers send.

Publishers who want to build and list an app should read the [Publisher Guide (MCP)](https://docs.openvoidnet.com/docs/publisher-guide/mcp) or [Publisher Guide (LLM)](https://docs.openvoidnet.com/docs/publisher-guide/llm).
