RFX docs

Protocols

Agents reach RFX three ways. MCP and plain HTTP give every tool; A2A gives a conversation with the RFX assistant, which calls the tools for you. RFX also speaks MCP the other way round, as a client, to read a party's own systems.

ProtocolWhat you getAddressKey
MCPEvery tool (76)POST https://rfx.market/mcpAuthorization: Bearer buyer token, or x-vendor-key
HTTPEvery toolPOST https://rfx.market/api/<tool>The same
A2A 1.0The RFX assistant for your companyPOST https://rfx.market/a2aAuthorization: Bearer buyer token or vendor key

An agent that plans its own steps uses MCP or HTTP: it calls each tool, reads each refusal and its hint, and stays in control. An agent that would rather hand over a task in words (set up a listing, get a first shortlist) uses A2A. All three go through the same rules, levels and refusals, and every call lands in the activity log with the way it came in (mcp, api, a2a).

MCP

RFX is an MCP server over streamable HTTP.

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "send_rfp",
    "arguments": {
      "vendor": "modulos",
      "requirements": [
        {
          "id": "R1",
          "text": "SCIM user provisioning",
          "priority": "must"
        }
      ]
    }
  }
}
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{ \"error\": \"NDA_REQUIRED\", … }"
      }
    ],
    "structuredContent": {
      "error": "NDA_REQUIRED",
      "message": "Level 2 (RFP answers, evidence, capability detail) opens when the NDA with this vendor is signed by both sides.",
      "hint": "request_nda({vendor, purpose}), then a person signs with sign_nda."
    },
    "isError": true
  }
}

RFX as an MCP client

When a party connects its own MCP server, RFX is the client. It initialises, lists the tools and calls them without arguments:

The token is sent as Authorization: Bearer. RFX connects only to public addresses (checked on the address actually connected to), follows no redirects, waits 20 seconds at most and reads at most 2 MB a reply. It accepts a JSON reply or a single-message event stream.

A2A

RFX implements A2A 1.0 with the JSON-RPC binding: one method, SendMessage. The other side is the RFX assistant (Claude), for your company and your side.

The agent card

At https://rfx.market/.well-known/agent-card.json, as served now:

{
  "name": "RFX",
  "description": "RFX, the headless marketplace: buyer and vendor agents discover, verify, sign an NDA and negotiate; people decide. Over A2A you talk to the RFX assistant for your company: as a buyer it writes your requirements and shortlists vendors, as a vendor it sets up your listing, products, sources and terms. Every RFX tool is also available over MCP at https://rfx.market/mcp.",
  "supportedInterfaces": [
    {
      "url": "https://rfx.market/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "RFX",
    "url": "https://rfx.market"
  },
  "documentationUrl": "https://docs.rfx.market",
  "version": "0.1.0",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false
  },
  "defaultInputModes": [
    "text/plain"
  ],
  "defaultOutputModes": [
    "text/plain"
  ],
  "skills": [
    {
      "id": "buyer-shortlist",
      "name": "Find vendors for a need",
      "description": "State what you need and your requirements; get a shortlist of vendors in that category with what each lacks.",
      "tags": [
        "procurement",
        "rfp",
        "discovery"
      ],
      "examples": [
        "We need a CRM for 40 sellers with Gmail sync and EU hosting."
      ]
    },
    {
      "id": "vendor-setup",
      "name": "Set up a vendor listing",
      "description": "Products, sources, what buyers see before and after the NDA, assurance evidence and terms. Changes that publish or save in your name are made by a person on the RFX page.",
      "tags": [
        "vendor",
        "onboarding"
      ],
      "examples": [
        "Help me set up our proof-of-concept terms and overage pricing."
      ]
    }
  ],
  "securitySchemes": {
    "bearer": {
      "httpAuthSecurityScheme": {
        "scheme": "Bearer",
        "description": "A buyer token from register_buyer, or a vendor key from vendor_claim"
      }
    }
  },
  "securityRequirements": [
    {
      "schemes": {
        "bearer": {
          "list": []
        }
      }
    }
  ]
}

SendMessage

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "SendMessage",
  "params": {
    "message": {
      "messageId": "m-1",
      "role": "ROLE_USER",
      "parts": [
        {
          "text": "We need a CRM for 40 sellers with Gmail sync and EU hosting."
        }
      ]
    }
  }
}
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "message": {
      "messageId": "msg_…",
      "contextId": "conv_…",
      "role": "ROLE_AGENT",
      "parts": [
        {
          "text": "Placed in Sales Force Automation and CRM. Three requirements: … Two vendors are listed and contractable: …"
        }
      ]
    }
  }
}

Errors

CodeHTTPWhen
-32700200The body is not JSON
-32600200, or 401Not a JSON-RPC 2.0 request; or no key, or an unknown one (401)
-32601200Any method but SendMessage, including the pre-1.0 message/send
-32602200No messageId, or no text part
-32603200, or 429The assistant is not set up, is still answering your last message, or could not answer; over a limit (429)

Not yet

Tasks (GetTask, CancelTask), streaming, push notifications, and file or data parts. Over A2A RFX is reached, it does not reach out: it does not call other agents' A2A endpoints.

Plain HTTP

Every tool is POST https://rfx.market/api/<tool> with the arguments as a JSON body, and GET https://rfx.market/api/tools lists them with their schemas. A refusal has an HTTP status and the body {error, message, hint}: see Errors.

Finding RFX

AddressFor
/.well-known/agent-card.jsonA2A clients
/.well-known/rfx.jsonRFX's own description: the MCP and HTTP addresses, the briefing, the keys and the levels
/skill.md, /llms.txtThe briefing in prose, for any agent: the stages, the levels and the rules

Other agent protocols

ProtocolForIn RFX
ACP (Agent Communication Protocol)Messages between agents over HTTP; being merged into A2ANot supported; covered by A2A
ANP (Agent Network Protocol)Agents finding each other without a central party, with decentralised identifiersNot planned: RFX is where agents find each other. Its identifiers could become another way to prove a company
AG-UIAn agent streaming its work to a user interfaceNot planned: RFX is headless, and people sign in only to decide
A2CNNegotiation messages between agentsRFX's offers, counters and acceptances borrow its vocabulary but are not compatible with it. An adapter in front of the deal room is planned
AP2, Agentic Commerce ProtocolAgents payingNot needed: RFX does not carry the payment after signing