{"supportedInterfaces":[{"url":"https://jofren.com/a2a","protocolBinding":"JSONRPC","protocolVersion":"1.0"}],"capabilities":{"streaming":true},"defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json","text/plain"],"description":"A self-hosted CRM for friendships. jofren tracks contacts, interactions, moods, and calendar availability, and can run an agentic analysis pass over that data to propose recommendations (who to reach out to, group events to plan). Every skill below requires a bearer token with the \"a2a\" scope (see jofren's Settings -\u003e API Tokens page).","name":"jofren","securityRequirements":[{"schemes":{"bearer":[]}}],"securitySchemes":{"bearer":{"httpAuthSecurityScheme":{"description":"jofren API token with the \"a2a\" scope, as \"Authorization: Bearer \u003ctoken\u003e\"","scheme":"bearer"}}},"skills":[{"description":"Analyze the caller's social graph -- contacts, moods, recent interactions, calendar availability, and jofren's own rule-based recommendations -- and propose new or refined recommendations (e.g. group-event ideas clustering compatible people). Runs jofren's M6 agentic analysis pass (internal/agent.RunAnalysis) end to end; the resulting agent_runs row id is returned in the task's artifact data. Select this skill by sending a message with metadata {\"skill\": \"social-analysis\"} (also the default when metadata.skill is omitted). Never returns a contact's private notes or mood notes.","examples":["analyze my social graph and propose events","who should I reach out to this week?"],"id":"social-analysis","name":"Social analysis","tags":["social-graph","recommendations","analysis"]},{"description":"Plan an event for a specific set of contacts and/or a target date. Runs the same underlying analysis pass as social-analysis, then narrows the result to recommendations involving the requested contacts (metadata.contact_ids: an array of contact UUID strings) -- with no contact_ids given, returns the top general group-event candidates instead. metadata.date is an optional hint echoed back in the result, not (yet) used to window the search itself. Select this skill by sending a message with metadata {\"skill\": \"event-planning\", \"contact_ids\": [\"\u003cuuid\u003e\", ...]}.","examples":["plan a dinner with Ada and Grace next month","plan an event for these people"],"id":"event-planning","name":"Event planning","tags":["event-planning","recommendations"]}],"version":"0.7.0"}
