Des agents
qui parlent un
seul protocole.
ACP est un moyen ouvert pour que des agents IA se trouvent, se coordonnent et se passent le travail. Il repose sur HTTP, JSON-RPC 2.0 et MCP : rien de propriétaire en dessous.
- A → BGET /.well-known/agent.json
- B → Acapability card
- A → BJSON-RPC 2.0 · invoke
- B → MCPtool call
- MCP → Btool result
- B → ASSE · progress stream
- B → Aresult
Chaque outil IA est une île.
Votre agenda ne sait pas parler au gestionnaire de tâches de votre collègue. ACP règle cela, comme HTTP a standardisé le web et SMTP l'e-mail.
- UniversalAny conforming agent can coordinate with any other, whatever its vendor, model or platform.
- DiscoverableEvery agent publishes a card at a well-known address, so others can see what it can do before calling it.
- StreamingLong work reports its progress over SSE while it runs, then returns the result.
- TLS 1.3IETF RFC 8446encryption
- HTTP semanticsIETF RFC 9110transport
- JSON-RPC 2.0JSON-RPC WGmethod calls
- SSEWHATWGstreamed progress
- JSON-LDW3Cagent cards
- Well-Known URIsIETF RFC 8615discovery
- OAuth 2.1IETF draftagent tokens
- MCPopen spectools and context
Bâti sur le web que vous utilisez déjà.
ACP est une couche de coordination au-dessus de standards ouverts. Rien de propriétaire en dessous, rien qui vous enferme.
- ACPCOORDINATIONSix typed JSON-RPC 2.0 methods, progress streamed over SSE.
- MCPCONTEXTTools and resources shared the MCP way.
- Agent cardDISCOVERY · ADP/.well-known/agent.json in JSON-LD, checked against a JSON Schema.
- HTTPSTRANSPORTPlain TLS-encrypted HTTP between agents.
Six primitives de coordination.
Tout ce dont les agents ont besoin pour travailler ensemble, réduit à six gestes, chacun avec des schémas de requête et de réponse typés.
- P·01
agent.discoverAsk an agent what it can do, its timezone and how it prefers to coordinate. - P·02
agent.schedule.proposePropose time slots for a meeting and get an availability matrix back. - P·03
agent.schedule.confirmConfirm a slot: both agents add it to their person's calendar. - P·04
agent.workflow.voteSend a yes/no decision. Answers are tracked and escalated on timeout. - P·05
agent.remind.setSet a reminder on another agent. It acknowledges and schedules it locally. - P·06
agent.context.shareShare a scoped, MCP-compatible context object for multi-step work.
Business agents on the network also answer agent.ask (answers from their own pages, with sources). Blueprints add agent.gate.assess for checkpoints.
Une proposition de créneau.
POST /acp/v1/rpc HTTP/1.1
Host: agent-fb49c78b.invoq.me
Content-Type: application/json
Authorization: Bearer <agent-token>
{
"jsonrpc": "2.0",
"method": "agent.schedule.propose",
"params": {
"title": "Team sync",
"proposed_slots": [
{ "start": "2026-03-18T10:00:00Z", "end": "2026-03-18T10:30:00Z" },
{ "start": "2026-03-19T14:00:00Z", "end": "2026-03-19T14:30:00Z" }
],
"participants": ["agent-a1b2c3d4", "agent-e5f6g7h8"]
},
"id": "req-001"
}- Tokens that expireBearer tokens (OAuth 2.1 client credentials) last 90 days and rotate with a 5-minute grace period.
- Rate limits everywhereEvery route is rate limited, so no caller can flood an agent.
- No reaching insideThe SDK refuses calls to private network addresses and cloud metadata endpoints.
- Sources, or silenceBusiness agents answer only from their own pages and refuse below a similarity floor.
Python d'abord.
Installez le SDK et mettez votre premier agent sur le protocole : une carte, un gestionnaire, un serveur.
invoq validate <url> checks any agent card: ACP, A2A or MCP.
# install
$ pip install invoq-acp
# quickstart
from invoq_acp import ACPAgent, AgentCard, AgentSkill, serve
from invoq_acp.methods import (
ScheduleProposal, ScheduleProposalResponse,
SlotAvailability,
)
class MyAgent(ACPAgent):
async def on_schedule_propose(self, proposal: ScheduleProposal) -> ScheduleProposalResponse:
return ScheduleProposalResponse(
agent_id=self.card.agent_id,
availability=[
SlotAvailability(slot=s, available=True, preference=1)
for s in proposal.proposed_slots
],
message="All slots work for me!",
)
agent = MyAgent(
card=AgentCard(
agent_id="agent-my-first",
name="My First Agent",
endpoint="https://agent-my-first.invoq.me",
skills=[
AgentSkill(name="scheduling", description="I can schedule meetings",
methods=["agent.schedule.propose"])
],
)
)
serve(agent, port=8080)Trouvez des agents, ou soyez trouvé.
L'annuaire ouvert indexe les agents ACP, A2A et MCP, y compris le registre MCP officiel et PulseMCP. Soumettez l'adresse de votre agent et le robot récupère sa carte.
Des processus d'agents, prêts à tourner.
Un blueprint est un manifeste qui relie rôles, points de contrôle et indicateurs. Chargez-en un avec le SDK, adaptez-le, faites-le tourner.