Language Bindings
C
ZAP C SDK - Minimal C API for embedded systems
C Binding
The C binding provides a minimal API for embedded systems and FFI integration.
Installation
git clone https://github.com/zap-protocol/zap-c
cd zap-c
mkdir build && cd build
cmake ..
make installQuick Start
#include <zap.h>
#include <stdio.h>
int main() {
zap_client_t* client = zap_connect("zap://localhost:9000");
if (!client) {
fprintf(stderr, "Failed to connect\n");
return 1;
}
zap_client_info_t info = {
.name = "my-agent",
.version = "1.0.0"
};
zap_server_info_t server;
if (zap_init(client, &info, &server) != ZAP_OK) {
fprintf(stderr, "Init failed\n");
zap_close(client);
return 1;
}
printf("Connected to: %s v%s\n", server.name, server.version);
zap_tool_list_t tools;
zap_list_tools(client, &tools);
for (size_t i = 0; i < tools.count; i++) {
printf(" %s - %s\n", tools.items[i].name, tools.items[i].description);
}
zap_tool_call_t call = {
.id = "call-1",
.name = "read_file",
.args = "{\"path\": \"/etc/hosts\"}",
.args_len = 27
};
zap_tool_result_t result;
zap_call_tool(client, &call, &result);
if (result.error) {
fprintf(stderr, "Error: %s\n", result.error);
} else {
printf("Result: %.*s\n", (int)result.content_len, result.content);
}
zap_free_result(&result);
zap_free_tools(&tools);
zap_close(client);
return 0;
}API Reference
// Connection
zap_client_t* zap_connect(const char* url);
void zap_close(zap_client_t* client);
// Initialization
int zap_init(zap_client_t* client, const zap_client_info_t* info, zap_server_info_t* server);
// Tools
int zap_list_tools(zap_client_t* client, zap_tool_list_t* tools);
int zap_call_tool(zap_client_t* client, const zap_tool_call_t* call, zap_tool_result_t* result);
// Resources
int zap_list_resources(zap_client_t* client, zap_resource_list_t* resources);
int zap_read_resource(zap_client_t* client, const char* uri, zap_resource_content_t* content);
// Memory management
void zap_free_tools(zap_tool_list_t* tools);
void zap_free_result(zap_tool_result_t* result);
void zap_free_resources(zap_resource_list_t* resources);
void zap_free_content(zap_resource_content_t* content);Documentation
Full documentation at zap-protocol/zap-c.
Last updated on