person.work — Agent-maintained CV
Ce que fait ce MCP
Maintains an authenticated career record, proposes CV changes for review and exposes approved public profile records.
Outils
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['username'], 'properties': {'format': {'enum': ['full', 'summary'], 'type': 'string', 'default': 'full'}, 'username': {'type': 'string', 'maxLength': 50, 'minLength': 3, 'description': 'The person.work profile slug'}, 'include_extensions': {'type': 'boolean', 'default': True}}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['instruction', 'proposed_patch'], 'properties': {'instruction': {'type': 'string', 'maxLength': 12000, 'minLength': 1}, 'diff_summary': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'operation'], 'properties': {'path': {'type': 'string', 'maxLength': 300, 'minLength': 1}, 'after': {}, 'before': {}, 'reason': {'type': 'string', 'maxLength': 1000}, 'operation': {'enum': ['add', 'replace', 'remove'], 'type': 'string'}}}, 'default': [], 'maxItems': 100}, 'source_label': {'anyOf': [{'type': 'string', 'maxLength': 300}, {'type': 'null'}]}, 'proposed_patch': {'type': 'object', 'properties': {'profile': {'type': 'object', 'properties': {'summary': {'anyOf': [{'type': 'string', 'maxLength': 12000}, {'type': 'null'}]}, 'headline': {'anyOf': [{'type': 'string', 'maxLength': 300}, {'type': 'null'}]}, 'avatar_url': {'anyOf': [{'type': 'string', 'format': 'uri', 'pattern': '^https:\\/\\/', 'maxLength': 2000}, {'type': 'null'}], 'description': 'Public HTTPS URL of the profile picture. person.work imports and stores a protected copy, cropped to a portrait frame. Use null to remove the current picture and fall back to initials; omit the field to preserve it.'}, 'competencies': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'maxItems': 40}, 'summary_full': {'anyOf': [{'type': 'string', 'maxLength': 20000}, {'type': 'null'}]}, 'summary_short': {'anyOf': [{'type': 'string', 'maxLength': 2000}, {'type': 'null'}]}, 'profession_group': {'anyOf': [{'type': 'string', 'maxLength': 160}, {'type': 'null'}]}, 'spoken_languages': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'maxItems': 40}}, 'additionalProperties': False}, 'extension': {'type': 'object', 'required': ['extension_id', 'fields'], 'properties': {'fields': {'type': 'object', 'propertyNames': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'additionalProperties': {'anyOf': [{'type': 'string', 'maxLength': 320}, {'type': 'array', 'items': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'maxItems': 60}, {'type': 'number'}, {'type': 'object', 'required': ['min', 'max'], 'properties': {'max': {'type': 'number'}, 'min': {'type': 'number'}}, 'additionalProperties': False}]}}, 'extension_id': {'type': 'string', 'maxLength': 120, 'minLength': 1}}, 'description': 'Typed profession fields (e.g. primaryLanguages, seniority). Replaces the stored fields of that extension; omit to leave them untouched.', 'additionalProperties': False}, 'experiences': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['operation', 'experience'], 'properties': {'operation': {'type': 'string', 'const': 'upsert'}, 'experience': {'type': 'object', 'required': ['stable_uri', 'company', 'role', 'start_date', 'end_date', 'order_index', 'is_prominent'], 'properties': {'role': {'type': 'string', 'maxLength': 320, 'minLength': 1}, 'result': {'anyOf': [{'type': 'string', 'maxLength': 8000}, {'type': 'null'}]}, 'company': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'context': {'anyOf': [{'type': 'string', 'maxLength': 8000}, {'type': 'null'}]}, 'problem': {'anyOf': [{'type': 'string', 'maxLength': 8000}, {'type': 'null'}]}, 'end_date': {'anyOf': [{'type': 'string', 'format': 'date', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$'}, {'type': 'null'}]}, 'headline': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}]}, 'learning': {'anyOf': [{'type': 'string', 'maxLength': 8000}, {'type': 'null'}]}, 'key_result': {'anyOf': [{'type': 'string', 'maxLength': 2000}, {'type': 'null'}]}, 'stable_uri': {'type': 'string', 'maxLength': 200, 'minLength': 3}, 'start_date': {'type': 'string', 'format': 'date', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$'}, 'order_index': {'type': 'integer', 'maximum': 99, 'minimum': 0}, 'contribution': {'anyOf': [{'type': 'string', 'maxLength': 16000}, {'type': 'null'}]}, 'is_prominent': {'type': 'boolean'}, 'company_logo_url': {'anyOf': [{'type': 'string', 'format': 'uri', 'pattern': '^https:\\/\\/', 'maxLength': 2000}, {'type': 'null'}], 'description': 'Public HTTPS URL of the company logo. person.work imports and stores a protected copy. Use null to remove the current logo; omit the field to preserve it.'}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['operation', 'stable_uri'], 'properties': {'operation': {'type': 'string', 'const': 'remove'}, 'stable_uri': {'type': 'string', 'maxLength': 200, 'minLength': 3}}, 'additionalProperties': False}]}, 'maxItems': 24, 'minItems': 1}}, 'additionalProperties': False}}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['profile', 'experiences'], 'properties': {'profile': {'type': 'object', 'required': ['headline', 'summary', 'summary_short', 'summary_full', 'profession_group', 'competencies'], 'properties': {'summary': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'headline': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'avatar_url': {'anyOf': [{'type': 'string', 'format': 'uri', 'pattern': '^https:\\/\\/', 'maxLength': 2000}, {'type': 'null'}], 'description': 'Public HTTPS URL of the profile picture. person.work imports and stores a protected copy, cropped to a portrait frame. Use null to remove the current picture and fall back to initials; omit the field to preserve it.'}, 'competencies': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'maxItems': 80}, 'summary_full': {'type': 'string', 'maxLength': 12000}, 'summary_short': {'type': 'string', 'maxLength': 1000}, 'primary_language': {'type': 'string', 'default': 'de', 'maxLength': 12, 'minLength': 2}, 'profession_group': {'type': 'string', 'maxLength': 160, 'minLength': 1}}, 'additionalProperties': False}, 'identity': {'type': 'object', 'required': ['first_name', 'last_name', 'slug'], 'properties': {'slug': {'type': 'string', 'pattern': '^[a-z0-9][a-z0-9-]{1,28}[a-z0-9]$', 'description': 'Requested public slug. Used only when the authenticated owner has no person.work profile yet.'}, 'last_name': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'first_name': {'type': 'string', 'maxLength': 120, 'minLength': 1}}, 'description': "Required only when this initial sync creates the authenticated owner's private person.work profile.", 'additionalProperties': False}, 'extension': {'type': 'object', 'required': ['extension_id', 'fields'], 'properties': {'fields': {'type': 'object', 'propertyNames': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'additionalProperties': {'anyOf': [{'type': 'string', 'maxLength': 320}, {'type': 'array', 'items': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'maxItems': 60}, {'type': 'number'}, {'type': 'object', 'required': ['min', 'max'], 'properties': {'max': {'type': 'number'}, 'min': {'type': 'number'}}, 'additionalProperties': False}]}}, 'extension_id': {'type': 'string', 'maxLength': 120, 'minLength': 1}}, 'description': 'Typed profession fields (e.g. primaryLanguages, seniority). Replaces the stored fields of that extension; omit to leave them untouched.', 'additionalProperties': False}, 'experiences': {'type': 'array', 'items': {'type': 'object', 'required': ['stable_uri', 'company', 'role', 'start_date', 'end_date', 'order_index', 'is_prominent'], 'properties': {'role': {'type': 'string', 'maxLength': 320, 'minLength': 1}, 'result': {'anyOf': [{'type': 'string', 'maxLength': 8000}, {'type': 'null'}]}, 'company': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'context': {'anyOf': [{'type': 'string', 'maxLength': 8000}, {'type': 'null'}]}, 'problem': {'anyOf': [{'type': 'string', 'maxLength': 8000}, {'type': 'null'}]}, 'end_date': {'anyOf': [{'type': 'string', 'format': 'date', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$'}, {'type': 'null'}]}, 'headline': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}]}, 'learning': {'anyOf': [{'type': 'string', 'maxLength': 8000}, {'type': 'null'}]}, 'key_result': {'anyOf': [{'type': 'string', 'maxLength': 2000}, {'type': 'null'}]}, 'stable_uri': {'type': 'string', 'maxLength': 200, 'minLength': 3}, 'start_date': {'type': 'string', 'format': 'date', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$'}, 'order_index': {'type': 'integer', 'maximum': 99, 'minimum': 0}, 'contribution': {'anyOf': [{'type': 'string', 'maxLength': 16000}, {'type': 'null'}]}, 'is_prominent': {'type': 'boolean'}, 'company_logo_url': {'anyOf': [{'type': 'string', 'format': 'uri', 'pattern': '^https:\\/\\/', 'maxLength': 2000}, {'type': 'null'}], 'description': 'Public HTTPS URL of the company logo. person.work imports and stores a protected copy. Use null to remove the current logo; omit the field to preserve it.'}}, 'additionalProperties': False}, 'maxItems': 24, 'minItems': 1}}, 'description': 'Structured CV facts interpreted by the calling agent. Raw files and source text are not part of this contract; person.work validates and stores only this structured payload.', 'additionalProperties': False}
Modifications récentes des outils
Serveurs MCP similaires
Stable Baseline
Manages company documents, knowledge graphs, whiteboards, projects, plans, tasks, teams, and improvement workflows.
Dayze — Life Context
Provides authenticated personal life-context data and tools for contacts, memories, events, expenses, trips, assets, places, and …
YouSpot
Connects personal contacts, companies, notes, files, CRM records, email, Slack, LinkedIn, and calendars, with search, relationshi…
mcp
Manages Nestr workspaces, roles, circles, tensions, governance proposals, comments, daily plans, graph relationships, agents, and…
personalbrain-mcp
Provides read and write access to a personal knowledge graph, including thoughts, notes, links, attachments, queries, and change …
Kaiku
Manages team issues, comments, attachments, projects, wiki pages, and related development workflows.
Dock
Provides collaborative workspaces with tables, documents, HTML surfaces, files, formulas, comments, activity tracking, agent mess…
ContextLayer
Stores and retrieves organizational documents and knowledge-graph context while managing projects, tasks, teams and work sessions.