How to register BuiltInToolscsharp
registry.Register(new AgentTool( "retrieve_memory", "Semantic search over vector memory. Use when you do not know the exact path (e.g. 'user profession', 'favorite color', 'pets').", args => { if (registry.Memory is null) return "Error: Memory system is not initialized."; try { using var doc = JsonDocument.Parse(args); var root = doc.RootElement; if (!root.TryGetProperty("query", out var queryProp)) { return "Error: Missing query property."; } string query = queryProp.GetString() ?? ""; if (string.IsNullOrWhiteSpace(query)) return "Error: Query cannot be empty."; var matches = registry.Memory.RetrieveAsync(query, topN: 3).GetAwaiter().GetResult(); if (matches.Count == 0) return "No matching memories found."; return JsonSerializer.Serialize(matches.Select(m => new { path = m.Path, content = m.Value })); } catch (Exception ex) { return $"Error: {ex.Message}"; } }, new { type = "object", properties = new { query = new { type = "string", description = "The semantic query to search memory for, e.g. 'What is the user's name?'." } }, required = new[] { "query" } } ));