See www.zabbix.com for the official Zabbix site.
Passive checks for Zabbix 1.1 are very simple. The agent listens for connections on the configured agent port (default is 10050) and waits for Zabbix to connect. After connecting, Zabbix will send the following request:
\n means a linefeed character, byte value 0x0A (dec 10).
The agent must then respond with the value of the item, base 10 (decimal):
No linefeed or any other characters required. After sending the result, the agent should close the connection to prevent Zabbix from waiting for more data.
When the agent receives a request for an item it doesn't support, it should return ZBX_NOTSUPPORTED to the server. The server will then disable the item and not ask for it again for some time. When the server has been configured to retry unsupported items (default after 10 minutes), it will request that data item again.
Implementations of the protocol
See an example of a passive Zabbix agent implemented in Ruby.