Unfold It MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| UNFOLD_API_KEY | Yes | Org-scoped API key. Generate at app.unfoldit.com -> Organization -> API Keys | |
| UNFOLD_API_URL | No | API base URL. Defaults to https://api.unfoldit.com | https://api.unfoldit.com |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| create_goalA | Create a goal in your Unfold org with an AI-generated plan. Returns a one-time claim link to send to the user. When they click it, they auto-join your org, get assigned the goal, and land directly on it with a fully AI-generated plan ready to execute. The plan generates asynchronously (15-30s). The claim link works immediately. Use get_goal_status to check when planGenerationStatus changes to "completed". With auto_respond=true (default), the agent answers all clarification questions automatically using the provided context. Set auto_respond=false to get questions back with agent suggestions for client review -- then use submit_clarification to provide your answers. CHAINING:
TYPED ERRORS (branch on error_code):
WARNINGS (non-fatal, surfaced in response.warnings):
|
| delete_goalA | Delete a goal created via the API. Use this when regenerating a goal after a learner retakes a skill assessment: call create_goal with the new suggested_goal_seed, then call delete_goal on the obsolete goal so the learner's dashboard shows the current goal instead of duplicates. Soft delete by default (status='deleted'); the dashboard already filters these out, but a superadmin can restore them. Set hard_delete=true to permanently remove the row and cascade to steps, plans, and share links. Scoped to api-created goals in your org -- you cannot delete goals a user created in the webapp UI. Calling twice with the same goal_id is safe (soft delete is idempotent). |
| get_goal_statusA | Get the current status and progress of a goal. Returns who claimed it, step completion breakdown, plan generation status, and the embeddable progress report link. Use this to check if plan generation is complete (planGenerationStatus: "completed") or to monitor a learner's progress. |
| list_goalsA | List all goals in your org created via the API. Filter by goal status (draft, in_progress, completed), claim status (unclaimed, claimed, expired, revoked), metadata tags, assigned learner email, or inactivity (at-risk detection). Use this to see all learner goals, check progress across a cohort, find unused claim links, or identify learners who have gone inactive. For aggregate cohort metrics, use get_analytics instead. |
| revoke_claimA | Invalidate a claim link so it can no longer be used. Does not remove access from a user who already claimed the goal. Use this if a link was sent to the wrong person or needs to be regenerated. |
| get_clarificationA | Get pending clarification questions for a goal with agent-suggested answers. Use this after create_goal with auto_respond=false. Returns the list of clarification questions along with what the agent suggested for each one, including confidence levels and reasoning. Review the suggestions, then use submit_clarification to accept or override them. |
| submit_clarificationA | Submit answers to clarification questions and trigger plan generation. Use after create_goal with auto_respond=false. Provide your own answers for questions you want to override. Set accept_agent_answers=true (default) to keep the agent's suggestions for all questions you did not explicitly answer. After submission, the plan generates asynchronously. Use get_goal_status to check when planGenerationStatus changes to "completed". |
| import_planA | Import a pre-formulated plan with steps and substeps into Unfold. Skips clarification entirely. Use this when you already have a structured plan (e.g. from Jira, Linear, or your own planning tool). Optionally enriches steps with AI-generated metadata: dependencies between steps, critical path identification, duration estimates, severity/complexity ratings, and quick-win flags. Set enrich=false to skip AI enrichment (0 credits). Returns the goal with a claim link and the enriched step list. |
| get_analyticsA | Get aggregated analytics for your organization's goals. Returns cohort KPIs (total, active, completed, blocked), claim metrics (activation rate, time-to-claim), at-risk learners (inactive for N days), an optional step-level completion funnel, and optional resource engagement breakdown. Use groupBy to break down completion rates by a metadata dimension (e.g. groupBy="track" shows completion rates for frontend, backend, etc). Use the metadata filter to narrow the scope to a specific cohort or department (e.g. metadata={cohort: "spring-2026"}). Examples:
|
| generate_skill_assessmentA | Generate a skill-proficiency assessment (MCQs) for a learner. You provide a skill, target proficiency, number of questions, and the work item the learner is preparing for. Unfold returns the questions with multiple-choice options, a signed assessment_token, and a proficiency band map. The learner answers in your UI; then call score_skill_assessment with the token and answers. Questions are AI-generated and validated (structural + semantic) before being returned. The assessment_token is HMAC-signed and tamper-proof; it contains the answer key AND per-question facet labels (since v0.7.0) so scoring is stateless and deterministic, and score returns per-facet aggregation without you doing any client-side joins. CHAINING:
TYPED ERRORS (branch on error_code):
Requires the "assessment:generate" scope on your org API key. |
| score_skill_assessmentA | Score a skill assessment using answers and the assessment_token from generate_skill_assessment. Returns the raw score, percentage, proficiency band, gap vs target, and per-question results. When the learner falls short of the target band, includes a suggested_goal_seed you can pass to create_goal. PER-FACET AGGREGATION (since v0.7.0): Response also includes per_facet (one entry per sub-skill with total, correct, raw_pct, classification) and shortlists weak_facets + strong_facets. Aggregation is computed server-side from facets embedded in the signed token, so partners do not write join logic. The facet_coverage field tells you whether facet labels are real ("full"), partially synthetic ("partial"), or entirely difficulty-bucket fallbacks ("difficulty_fallback") -- soften "weak in X" UI framing when coverage is not "full". CHAINING into create_goal: The shape of this response is purpose-built to drop straight into create_goal's 'assessment' field (as a skill_proficiency v1 variant):
Scoring is stateless and deterministic: the signed assessment_token contains the answer key. Tampered or expired tokens are rejected. Same request_id returns the same result (idempotent). TYPED ERRORS (branch on error_code):
Requires the "assessment:score" scope on your org API key. |
| get_assessment_capabilitiesA | Get supported parameters for skill assessments. Returns the schema version, supported languages, min/max question count, proficiency bands, default band thresholds, default difficulty mix, and whether the system is open-domain (accepts any skill) or restricted. Use this to introspect before calling generate_skill_assessment. No parameters required. Requires the "assessment:read_capabilities" scope on your org API key. |
| list_resource_categoriesA | List available resource categories for goal classification. Returns the categories you can use in create_goal's For example, "health_adhd" restricts resources to curated clinical sources, excludes medication content, adds disclaimers, and generates shorter substeps with transition rituals. "learning" adds YouTube, GitHub, and Official Docs providers alongside web search. Use this to build adaptive UIs that show category-specific options to your users. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Unfold-it/unfoldit-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server