Module compatibility
prxy.monster modules are not magic. Each one declares which provider capabilities it requires and what it does when those capabilities are missing. Compatibility metadata lives in each module’s manifest under compatibility.
Manifest schema (excerpt)
{
"name": "@prxy-official/mcp-optimizer",
"version": "1.0.0",
// ...
"compatibility": {
"providers": ["anthropic", "openai", "google", "groq", "aws_bedrock", "openrouter"],
"requires": ["chat", "tools"],
"optional": ["embeddings"],
"fallback": "skip",
"notes": "Scores each MCP tool against the request via embeddings."
},
"receiptMetadataEmitted": ["module_chain", "policy_decision"],
"riskLevel": "low"
}
compatibility.providers
Which wire providers the module supports. If a request runs against a provider not in this list, the module is skipped (or downgraded — see fallback).
compatibility.requires
Required capabilities. Common values:
chat— Messages / Chat Completions wire.streaming— SSE streaming.tools— function-calling / tool-use blocks.prompt_caching— Anthropic-style cache_control markers.embeddings— provider exposes an embeddings endpoint, OR the module can reach a separate embeddings backend.token_usage_reporting— provider returns usage in the response (cost-guard requires this).
compatibility.optional
Capabilities the module uses if available, but doesn’t require.
compatibility.fallback
What happens when a required capability is missing:
skip— module returns control to the pipeline without modifying the request. Receipt’smodule_chainrecords that the module was bypassed.degrade— module runs in a reduced mode (e.g.routerfalls back to the explicitly requested model on a routing miss).block— module refuses to run and returns a structured error (e.g.cost-guardif budget can’t be evaluated). A signedblockedreceipt is emitted.
We never silently corrupt a request. If a module can’t run, the receipt says so.
receiptMetadataEmitted
Which receipt fields the module stamps. Examples:
module_chain— every module that ran.policy_decision— whether a policy module transformed/blocked.cache_status—hit/miss/bypassed.routing_decision— model choice when the router runs.redaction_policy— guardrails id when redaction occurred.
riskLevel
A coarse human-facing tag: low, medium, high. Low-risk modules read or transform metadata; high-risk modules can block the call or route to a different upstream.
Compatibility table (12 verified modules)
The full machine-readable table is at /modules.json. Key highlights:
| Module | Providers | Requires | Fallback | Risk |
|---|---|---|---|---|
compaction-bridge | all 6 | chat | skip | low |
cost-guard | all 6 | chat, token_usage_reporting | block | low |
exact-cache | all 6 | chat | skip | low |
guardrails | all 6 | chat | block | low |
ipc | all 6 | chat | degrade | low |
mcp-optimizer | all 6 | chat, tools | skip | low |
patterns | all 6 | chat, embeddings | skip | low |
prompt-optimizer | anthropic only | chat, prompt_caching | skip | low |
rehydrator | all 6 | chat, embeddings | skip | low |
router | all 6 | chat | degrade | low |
semantic-cache | all 6 | chat, embeddings | skip | low |
tool-cache | all 6 | chat, tools | skip | low |
Cloud + local
Every official module supports both cloud_supported and local_supported. The single exception today is cost-guard, where the local edition has local_supported: "partial" because some enforcement hooks rely on the hosted budget aggregator.
See also
- Modules marketplace
- Module SDK — write your own
- /modules.json