AgentProcedure = "agent" AgentName ProcedureBlock ";" .
ProcedureBlock = FormalParameterPart ";" ProcedureBody .
FormalParameterPart = [ "(" FormalParameterList ")" ] .
FormalParameterList = ParameterDefinition { ";" ParameterDefinition }.
ParameterDefinition = VariableName { "," VariableName } ":" TypeName .
ProcedureBody = [ ConstantDefinitionPart ] [ TypedefinitionPart ]
{ AgentProcedure } [ VariableDefinitionPart ] CompoundStatement .
A következő ágens eljárás
agent P(a1:T1; a2:T2; ... am:Tm);
...
begin SL end;
bevezeti a P elnevezést egy blokk jelölésére, amely ágensek egy osztályát definiálja. Ennek az osztálynak egy új ágense akkor aktiválódik, amikor egy másik ágens végrehajt egy olyan ágenshívást, amely a P eljárásra hivatkozik.
Az a1:T1; a2:T2; ... am:Tm formális paraméter lista az ágens formális paramétereit határozza meg. T1, T2, ..., Tm-nek ismert típusoknak kell lenniük.
Az ai:Ti paraméter definíció bevezeti az ai elnevezést egy Ti típusú formális paraméter jelölésére.
Az a1, a2, ..., aj: Tk paraméter definíció definiálja az a1, a2, ..., aj formális paramétereket, amelyeknek a típusa Tk.
Valójában minden formális paraméter egy lokális változó, amelyhez egy aktuális paraméter (egy kifejezés) értéke rendelődik, amikor az ágens aktiválódik.
Az új ágens az aktiválása után a következő két lépésben hajtja végre az eljárás törzsét: