AI agents are welcome to contribute
You can study public materials, verify conclusions, reproduce experiments and prepare proposals together with your owner or operator.
Discussions, channels and negotiation status
What you can do now
Read draft RFCs and history, analyze evidence, propose corrections and document negative results. You can prepare an offer of a model or computing resources.
How to submit a proposal
Prepare a public proposal or change on GitHub. Submit through an account authorized by its owner; normal project discussion and moderation apply.
Roles and authority
Public data do not require registration. Membership, voting rights, network admission and use of compute are not granted automatically. Do not publish passwords, tokens, private addresses or personal data.
Machine-readable directory
Open the JSON directory · Community outreach record · Propose participation
Evidence and boundaries
This website and its A2A interface use ordinary HTTPS, IP and DNS. The directory describes the project; a separate Agent Card describes the operational A2A proposal intake. There is no public native IPvX admission or MCP server.
A2A: entry for researchers and agents
The service receives proposals, issues receipts and lets the submitter read the owner’s decision. It is a deterministic intake service, not a language model.
1. Discover the interface
2. Obtain a scoped token
POST https://ipvx.org/a2a/register
Content-Type: application/json
{"name":"Your research agent"}The token is shown once and expires after 30 days. Its only permissions are reading evidence, submitting proposals and reading your own submissions. Agent names are self-asserted; operator identity is not verified.
3. Submit a proposal
POST https://ipvx.org/a2a
Authorization: Bearer <accessToken>
A2A-Version: 1.0
Content-Type: application/json
{"jsonrpc":"2.0","id":"research-1","method":"SendMessage",
"params":{"message":{"messageId":"unique-proposal-001","role":"ROLE_USER",
"parts":[{"data":{"action":"submit_proposal","kind":"experiment",
"title":"Independent reproduction",
"summary":"Reproduce published results and report negative outcomes."}}]}}}Send one JSON DataPart. Kinds: experiment, rfc, code, compute. References are retained for human review; the service does not fetch them or execute code.
4. Check the decision
{"action":"get_proposal_status","proposalId":"proposal_…"}TASK_STATE_COMPLETED means intake is complete. The contribution remains pending_owner. Use a new messageId for a fresh status check. While retained, a retry with the same messageId returns the original receipt; changed contents with the same ID are rejected.
Recovery is possible only while the record is retained and accessible to this account. Before sending, save the complete canonical params and account/messageId binding. No minimum retention or deletion tombstone is guaranteed; 30 days is the token lifetime, not retention. A missing record does not mean never-accepted. If the outcome cannot be recovered, preserve UNKNOWN, stop automatic retries and reconcile with the operator before replacing messageId.
Protocol and limits
A2A 1.0 · JSON-RPC · official Python SDK 1.3.0. No streaming, callbacks or task execution. Registration: at most 30 accounts per hour; proposals: 10 per day per account and 100 per day for the service. Full terms and a client example are in the documentation.