{
    "provider": "Al Amin Ahamed",
    "protocol": "mcp",
    "endpoint": "https://alaminahamed.com/mcp/portfolio",
    "server_card": "https://alaminahamed.com/.well-known/mcp/server-card.json",
    "authentication": {
        "type": "oauth2.1",
        "authorization_endpoint": "https://alaminahamed.com/oauth/authorize",
        "token_endpoint": "https://alaminahamed.com/oauth/token"
    },
    "count": 55,
    "skills": [
        {
            "name": "get-posts",
            "description": "Get published blog posts. Optionally filter by tag slug or limit count."
        },
        {
            "name": "get-post",
            "description": "Get a single post by slug including full body and tags."
        },
        {
            "name": "get-projects",
            "description": "Get portfolio projects. Optionally filter by technology name or include drafts."
        },
        {
            "name": "get-project",
            "description": "Get a single project by slug with full body, problem, outcome, and gallery."
        },
        {
            "name": "get-experience",
            "description": "Get work experience, education, or recommendations. Use kind to filter."
        },
        {
            "name": "get-now-entry",
            "description": "Get now-page entries. Returns the current entry by default, or all entries."
        },
        {
            "name": "get-stack-items",
            "description": "List all stack items, optionally filtered by category."
        },
        {
            "name": "get-site-info",
            "description": "Get site info: owner bio, contact details, social links, and tech stack grouped by category."
        },
        {
            "name": "list-tags",
            "description": "List all post tags with their slugs and post counts."
        },
        {
            "name": "search-content",
            "description": "Search blog posts and projects by keyword. Returns matching titles, slugs, and summaries."
        },
        {
            "name": "suggest-related",
            "description": "Find posts and projects related to a given one, matched on shared tags and stack."
        },
        {
            "name": "auto-link",
            "description": "Suggest or apply internal in-body links for a post/project where it mentions other published content."
        },
        {
            "name": "create-post",
            "description": "Create a new blog post. Returns the created post slug."
        },
        {
            "name": "update-post",
            "description": "Update any fields on an existing post. Only supplied fields are changed."
        },
        {
            "name": "publish-post",
            "description": "Publish, schedule (future published_at), or unpublish a post. Future dates auto-set status=scheduled."
        },
        {
            "name": "delete-post",
            "description": "Soft-delete a post by slug. Pass force=true to permanently delete."
        },
        {
            "name": "bulk-update-posts",
            "description": "Apply field updates to many posts in one call. Returns per-slug success/failure."
        },
        {
            "name": "create-project",
            "description": "Create a new portfolio project. Returns the created project slug."
        },
        {
            "name": "update-project",
            "description": "Update any fields on an existing project. Only supplied fields are changed."
        },
        {
            "name": "publish-project",
            "description": "Publish, unpublish, or archive a project. Scheduling is not supported (ProjectStatus has no Scheduled case)."
        },
        {
            "name": "delete-project",
            "description": "Soft-delete a project by slug. Pass force=true to permanently delete."
        },
        {
            "name": "duplicate-project",
            "description": "Duplicate a project as a new draft. Copy gets a -copy suffix on its slug."
        },
        {
            "name": "bulk-update-projects",
            "description": "Apply field updates to many projects in one call. Returns per-slug success/failure."
        },
        {
            "name": "create-experience",
            "description": "Add a new experience entry (work, education, recommendation, open_source, achievement)."
        },
        {
            "name": "update-experience",
            "description": "Update an experience entry by ID. Only supplied fields are changed."
        },
        {
            "name": "delete-experience",
            "description": "Permanently delete an experience entry by ID."
        },
        {
            "name": "create-now-entry",
            "description": "Create a new now-page entry. Optionally mark it as current (demotes previous current)."
        },
        {
            "name": "update-now-entry",
            "description": "Update a now-page entry by ID. Only supplied fields are changed."
        },
        {
            "name": "delete-now-entry",
            "description": "Delete a now-page entry by ID."
        },
        {
            "name": "update-site-setting",
            "description": "Read or write a site setting. Common keys: site_name, site_tagline, site_description, contact_email, github_url, linkedin_url, twitter_url, location, resume_url. Availability lives in the `availability` JSON key."
        },
        {
            "name": "create-stack-item",
            "description": "Add a new item to the stack page. Returns the created item ID."
        },
        {
            "name": "update-stack-item",
            "description": "Update a stack item by ID. Only supplied fields are changed."
        },
        {
            "name": "delete-stack-item",
            "description": "Delete a stack item by ID."
        },
        {
            "name": "create-post-tag",
            "description": "Create a new post tag. Returns the created tag id and slug."
        },
        {
            "name": "update-post-tag",
            "description": "Rename a post tag (name) or change its slug."
        },
        {
            "name": "delete-post-tag",
            "description": "Delete a post tag. Refuses to delete when posts are attached unless force=true."
        },
        {
            "name": "merge-post-tag",
            "description": "Merge source tag into target. Posts on source get target. Source tag is deleted."
        },
        {
            "name": "manage-redirect",
            "description": "Manage 301/302 route redirects. Actions: create, list, update, delete."
        },
        {
            "name": "get-drafts",
            "description": "List all draft posts ordered by last update."
        },
        {
            "name": "get-scheduled",
            "description": "List all scheduled posts with their upcoming publish dates."
        },
        {
            "name": "restore-post",
            "description": "Restore a soft-deleted post by slug."
        },
        {
            "name": "restore-project",
            "description": "Restore a soft-deleted project by slug."
        },
        {
            "name": "duplicate-post",
            "description": "Duplicate a post as a new draft. The copy gets a -copy suffix on its slug."
        },
        {
            "name": "bulk-publish",
            "description": "Publish multiple draft or scheduled posts in one call. Pass an array of slugs."
        },
        {
            "name": "generate-seo-meta",
            "description": "Return a post or project with its current SEO meta and the length limits. The caller writes the meta and saves it with update-post or update-project."
        },
        {
            "name": "suggest-tags",
            "description": "Return a post and the full tag vocabulary so the caller can choose tags. Attach them with update-post."
        },
        {
            "name": "improve-summary",
            "description": "Return a post summary with the context needed to rewrite it. The caller writes the new summary and saves it with update-post."
        },
        {
            "name": "generate-reading-time",
            "description": "Calculate and optionally save the reading time (minutes) for a post based on its body word count."
        },
        {
            "name": "draft-from-idea",
            "description": "Return the brief for a new draft: a free slug, required fields, and the available vocabulary. The caller writes it and saves with create-post or create-project."
        },
        {
            "name": "analyze-seo",
            "description": "Score SEO quality of a post or project. Returns checks, score 0-100, and recommendations."
        },
        {
            "name": "get-messages",
            "description": "List contact form messages. Filter by status: new, read, or all (default: new)."
        },
        {
            "name": "mark-message-read",
            "description": "Mark a contact form message as read by its ID."
        },
        {
            "name": "daily-digest",
            "description": "Return a dashboard digest: post/project counts, new messages, and top-viewed posts."
        },
        {
            "name": "get-view-stats",
            "description": "Get view counts for published posts, sorted by most viewed. Optionally limit the results."
        },
        {
            "name": "generate-resume",
            "description": "Regenerate the portfolio resume PDF from current database content (experiences, projects, stack items, site settings). Overwrites storage/app/public/resume.pdf."
        }
    ]
}