Edit Base Resume
edit_base_resumeApply typed edits to a base resume—update entries, bullets, skills, contact info, or sections—and re-render the PDF with the revised content.
Instructions
Apply typed edit ops to a base resume. replace_entry changes a field on one
entry (dates, title, company, project name, link, tech) given that entry's
index and the full edited entry; update_base_resume instead replaces the
whole resume body (PUT). ExtraSection shape is on ops (ATS-neutral).
Indices are 0-based into the FULL array (incl. enabled:false), as returned by
get_base_resume, never PDF order. Response applied echoes each op. Kinds:
{"kind":"replace_summary","value":str|null,"expected_content_hash"?:str}
{"kind":"toggle_entry","section":"experience"|"projects","index":int,"enabled":bool}
{"kind":"replace_bullet","section":,"index":int,"bullet_index":int,"value":str,"expected_content_hash"?:str}
{"kind":"replace_skills_group","category":str,"items":[str]} (case-insensitive)
{"kind":"add_skill_item","category":str,"item":str}
{"kind":"add_bullet","section":"experience"|"projects","index":int,"text":str}
{"kind":"add_entry","section":,"value":} (appends)
{"kind":"replace_entry","section":,"index":int,"value":} (one indexed entry only)
{"kind":"remove_entry","section":,"index":int}
{"kind":"remove_bullet","section":,"index":int,"bullet_index":int}
{"kind":"replace_contact","value":}
{"kind":"replace_certifications","items":[str]}
{"kind":"add_extra_section","value":}
{"kind":"replace_extra_section","section_key":str,"value":} (key may not change)
{"kind":"remove_extra_section","section_key":str}
{"kind":"move_extra_section","section_key":str,"to_index":int} =experience|projects|education (toggle_entry/add_bullet: experience|projects). section_key is ExtraSection.key. Bad index/category/key → error. Re-renders PDF. Every response carries
render_error: non-null means the automatic re-render failed and the existing PDF is stale.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ops | Yes | Typed edit ops. Each is an object with a `kind`, one of: replace_summary | toggle_entry | replace_bullet | replace_skills_group | add_skill_item | add_bullet | add_entry | replace_entry | remove_entry | remove_bullet | replace_contact | replace_certifications | add_extra_section | replace_extra_section | remove_extra_section | move_extra_section. To change a field ON an entry — dates, title, company, project name, link, tech — use replace_entry with that entry's index and the full edited entry object; it is scoped to that one entry (a whole-resume replace is the separate update_base_resume tool). See the tool description for each op's shape. add_extra_section/replace_extra_section `value` is {key,title,enabled,type:"entries"|"bullets"} plus EITHER entries:[{heading,subheading?,location?,date?,link?,enabled,bullets:[str]}] OR bullets:[str] — never both; unknown keys are rejected (400, extra="forbid"). | |
| slug | Yes |