{"name":"io.github.JinyangWang27/people-context","slug":"jinyangwang27-people-context","title":null,"description":"Local-first MCP server giving AI agents contextual knowledge about the people in your life","url":"https://mcp.market/server/jinyangwang27-people-context","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":44,"stars":55,"forks":2,"downloads_week":267,"last_push_at":"2026-09-19T09:50:20.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/JinyangWang27/people-context","website":null,"version":"1.2.1","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"people-context","version":"1.2.1","runtimeHint":"uvx","transport":{"type":"stdio"},"runtimeArguments":[{"value":"people-context==1.2.1","type":"named","name":"--from"}]}],"tools":[{"name":"add_alias","description":"Add a normalized-deduplicated alias to an existing person.","write_action":false,"price_micros":0,"input_schema":null},{"name":"add_group_membership","description":"Record that an existing person held a role in an existing group.","write_action":false,"price_micros":0,"input_schema":null},{"name":"close_group_membership","description":"Record the last day a historically true membership held.","write_action":false,"price_micros":0,"input_schema":null},{"name":"commit_import","description":"Commit accepted people and resolvable interactions idempotently.","write_action":false,"price_micros":0,"input_schema":null},{"name":"complete_reminder","description":"Transition one active reminder to completed.","write_action":false,"price_micros":0,"input_schema":null},{"name":"correct_record","description":"Correct whitelisted assertion fields in place with before/after audit.","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_group","description":"Create one identified group: a class, cohort, team, department, club, household, or community.","write_action":true,"price_micros":0,"input_schema":null},{"name":"explain_shared_connections","description":"Explain how two people are connected through groups they were both recorded in, and when.","write_action":false,"price_micros":0,"input_schema":null},{"name":"export_data","description":"Export the complete portable domain dataset.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_connection","description":"Return one shortest relationship path, or a structured not-connected result.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_groups","description":"List groups whose normalized name contains `name`, optionally of one `kind`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"forget","description":"Hard-delete a person or record and redact identifying audit history.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_communication_guidance","description":"Return sensitivity-gated signal for client-composed communication advice.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_consolidation_context","description":"Return one person's stored facts, traits, observations, and affiliations and how they relate.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_group","description":"Return one group and a bounded page of its recorded memberships.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_person_context","description":"Assemble a minimal-disclosure context bundle for one person.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_person_timeline","description":"Return one person's recent history, newest first, as a bounded chronology.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_relationship_graph","description":"Return active relationship structure around one person, capped for bounded disclosure.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_sensitive_person_context","description":"Return context that may include sensitive and restricted records.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_stale_relationships","description":"Return people you have not interacted with recently, using ordinary interactions only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"import_content","description":"Extract and atomically stage header-only candidates from a supported source without bodies.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_group_memberships","description":"Return a bounded page of one person's recorded group memberships with each group.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_reminders","description":"List pull-based reminders, due-dated first and communication notes last.","write_action":false,"price_micros":0,"input_schema":null},{"name":"merge_people","description":"Merge a duplicate person into a primary person atomically.","write_action":false,"price_micros":0,"input_schema":null},{"name":"record_fact","description":"Record a time-aware fact about an existing person.","write_action":false,"price_micros":0,"input_schema":null},{"name":"record_interaction","description":"Record a concise interaction summary after validating all participants.","write_action":false,"price_micros":0,"input_schema":null},{"name":"record_observation","description":"Record a subjective observation, separate from disclosed context.","write_action":false,"price_micros":0,"input_schema":null},{"name":"record_trait","description":"Record a derived trait with validated category and provenance.","write_action":false,"price_micros":0,"input_schema":null},{"name":"remember","description":"Record one thing the user stated about one person, in a single call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"remember_person","description":"Create a new person or update the existing one matching `name`.","write_action":true,"price_micros":0,"input_schema":null},{"name":"resolve_person","description":"Resolve a name, nickname, or partial reference to candidate people.","write_action":false,"price_micros":0,"input_schema":null},{"name":"review_import","description":"Return staged candidates and statuses for one batch.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_people","description":"Free-text search over stored people for browsing or lookup.","write_action":false,"price_micros":0,"input_schema":null},{"name":"semantic_search","description":"Search active people and safe interaction summaries by multilingual semantic similarity.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_affiliation","description":"Create an affiliation, resolving an org id or get/creating by name.","write_action":true,"price_micros":0,"input_schema":null},{"name":"set_communication_philosophy","description":"Store communication philosophy verbatim while auditing lengths only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_relationship","description":"Create a directed relationship between two existing people.","write_action":true,"price_micros":0,"input_schema":null},{"name":"set_reminder","description":"Create a reminder for an existing person.","write_action":true,"price_micros":0,"input_schema":null},{"name":"stage_candidates","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"supersede_fact","description":"Close a fact that was true and open its replacement from an effective date.","write_action":false,"price_micros":0,"input_schema":null},{"name":"upcoming_dates","description":"Return ordinary birthdays and dated active reminders inside an inclusive upcoming window.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-19T21:03:58.025Z","report":{"scannerVersion":"0.1.8","scannedAt":"2026-09-19T21:03:58.018Z","components":{"code":{"score":25,"max":25,"notes":["262 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"people-context","version":"1.2.1","found":true,"license":"MIT","dependencyCount":7,"publishedAt":"2026-09-14T17:21:07.653551Z","repositoryUrl":"https://github.com/JinyangWang27/people-context"}],"repo":{"found":true,"owner":"JinyangWang27","repo":"people-context","archived":false,"pushedAt":"2026-09-19T09:50:20Z","stars":55,"forks":2,"openIssues":2,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/42408214?v=4","ownerCreatedAt":"2018-08-15T11:16:00Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/42408214?v=4&s=128","source":"registry"},"presence":{"stars":55,"forks":2,"downloadsWeek":267,"license":"MIT","lastPushAt":"2026-09-19T09:50:20.000Z","score":44}}}},"grade_history":[],"reviews":[]}