# Void Apps (/docs/learn/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 tools and AI models. One model per LLM app.

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

Connect and query language model providers through a unified OpenAI-compatible interface. **TEXT only** — 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`.

## 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/{username}/{appname}", 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 requests through the gateway — JSON-RPC 2.0 for MCP (above), a chat-completions body for LLM (above).

**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`), verify a domain ([Domain Verification](https://docs.openvoidnet.com/docs/domain-verification)), 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/mcp/publisher) or [Publisher Guide (LLM)](https://docs.openvoidnet.com/docs/llm/publisher).
