MCP servers
Two servers, one catalog each — generated from the servers' own tools/list at v13. Connect the endpoint, then load the skills that wrap it. Tap a group to see its tools; tap a tool for its parameters.
Context Blog MCP
The publishing engine for Context: agents draft, lint and publish blog posts, site pages and Instagram carousels on the user's own domain, with a person approving every piece before it goes live. Also drives the AEO/GEO loop — tracking AI-referral traffic, Search Console queries and an AI-visibility probe so the agent can see and improve how often assistants cite the site.
https://sites.onecontext.me/api/mcpSkills & setup 5 · all
- usage_guide read-onlyRead this first — what Context Blog is, how it relates to the Context MCP (approvals live there), tools, tiers and rules.
- get_capabilities read-onlyMachine-readable Context Blog contract: version, tools, workflows, harnesses, auth methods and limits.
- list_skill_catalog read-onlyActive skills on the shared skill channel (key, kind, version, name, description, depends, url).
- get_skill read-onlyOne skill revision (active by default) with its SKILL.md content, extra files and provenance.
- setup read-onlyCALL THIS FIRST when starting Context Blog work in a repo or chat.
Checker 4 · all
- preview_render Server-side render of a draft article or page into one self-contained HTML page with the tenant's design tokens as CSS variables.
- content_lint read-onlyThe MACHINE half of the blog-checker playbook, no side effects: answer-first ≤ 60 words, each H2 followed by a 40–75-word paragraph, table/list for comparison·listicle·how-to, FAQ 3–5 × 80–150 words, inline HTML allowlist (em/strong/a), ≥ 2 outbound citations, ≥ 2 numeric statistics, ≥ 1 original artifact, hub assigned, localised slug/title/description vs master, style rotation vs recent_styles, banned phrases, first-person density.
- check_record Append one blog-checker verdict for a draft: tenant_slug, subject_kind (article | page | instagram), subject_ref (the Context issue id, or a draft id before one exists), round (1 = first check), verdict (pass | bounce | escalate), findings (the verdict document's checks, as JSON) and models ({maker, checker}).
- check_list read-onlyEvery recorded blog-checker verdict for a subject_ref (Context issue id or draft id), oldest round first — use it to know the current round before bouncing again (bounce ≤ 2 rounds, then escalate).
Tenant & brand 8 · all
- tenant_create Create a tenant (a site such as getmeetly.ai/blog).
- tenant_get read-onlyTenant settings plus brand profile, audiences, hubs, domains and content counts.
- tenant_update Patch tenant settings (name, tier, products, recurrence, locales, default_locale, timezone, mount_path, primary_hostname, context_epic_id, context_epic_surface: phone | web — where the epic was created, so the settings page leads with context://tasks/<epic> or the web URL).
- brand_upsert Replace the tenant's brand profile: voice (persona, banned_phrases[], …), byline (author name/url), design_tokens (blog-agent/templates/design-tokens.json shape — used by previews and the renderer), optional organization_ld / software_application_ld (JSON-LD).
- audiences_upsert Upsert audience segments by key (name, description, pains[], queries[]).
- hubs_upsert Upsert topic hubs by slug (title, description, pillar_article_id).
- topics_upsert Create or update topics (the research backlog): hub_slug, title, target_query, fanout_queries[], status (idea | researched | drafting | published | retired), context_issue_id, source.
- topics_list read-onlyTopics of a tenant, newest first, optionally filtered by status.
Content (articles/pages) 9 · all
- article_upsert Create or update an article draft.
- article_get read-onlyOne article by id, or by slug + locale.
- article_list read-onlyArticles of a tenant, newest first, without bodies.
- article_set_status Move an article one step forward: draft → in_review → approved → published → retired (any other jump is `conflict`).
- page_upsert Create or update a site page (about, pricing, landing).
- page_get read-onlyOne page by id, or by slug + locale.
- page_list read-onlyPages of a tenant, newest first, without bodies.
- page_set_status Move a page one step forward (draft → in_review → approved → published → retired).
- publish Publish exactly one of article_id | page_id | instagram_post_id.
Assets 2 · all
- asset_upload Reserve an asset row and get a signed PUT URL into the Supabase Storage bucket blog-assets (valid 2 h).
- asset_complete Mark an uploaded asset ready and record width / height / alt.
Instagram 4 · all
- instagram_post_upsert Create or update an Instagram carousel draft: caption (≤ 2200 chars), slides (asset ids of this tenant, 1–10, in order), publish_at, context_issue_id.
- instagram_post_get read-onlyOne Instagram post by id: caption, slides, status, context_issue_id, Postiz id and permalink once posted.
- instagram_post_list read-onlyInstagram posts of a tenant, newest first.
- instagram_post_set_status Move an Instagram post one step forward: draft → in_review → approved → published → retired (any other jump is `conflict`).
Domain 2 · all
- domain_connect Record a hostname for the tenant and return the DNS / proxy instructions plus copy-paste snippets (vercel.json rewrites as getmeetly.ai uses them, next.config.js rewrites(), nginx location; the DNS record for cname).
- domain_status Verify a connected hostname and store the result.
Analytics 10 · all
- stats_summary read-onlyHow the blog is doing over a period (7d | 28d | 90d, default 28d, ending yesterday; or from/to): totals (pageviews, visitors, visits, bounces, time), the previous period for comparison, channel split with the AI-referral share and per-engine visitors, Search Console clicks/impressions/position when ingested, AI-visibility cited rate when a probe ran, top 5 posts.
- top_posts read-onlyPosts ranked by pageviews over the period (default 28d), joined to the article (title, url, locale) with AI-referral pageviews and Search Console clicks per post.
- post_stats read-onlyOne article over the period (by article_id, or slug + locale): daily pageviews, AI-referral pageviews per engine, Search Console totals + top queries for its URL, and the probe results that cited it.
- ai_referrals read-onlyVisitors and pageviews that arrived from AI assistants (chatgpt, perplexity, gemini, claude, copilot, grok, meta, you, google_aio) over the period: per engine, per day, and the landing pages.
- search_queries read-onlySearch Console query × page rows over the period (ingested nightly when GSC_SERVICE_ACCOUNT_JSON and tracking.gsc_property are set): clicks, impressions, CTR, position, striking_distance (position 5–20 — a refresh candidate).
- visibility_report read-onlyPer query × engine: the latest probe status in the period (cited | mentioned | absent | error | no_ai_answer), citation rank and URL, and the status in the previous period (trend).
- visibility_queries_set Upsert the tenant's target queries for the AI-visibility probe (≈ 30; the blog-assessment skill probes the active ones weekly): query, topic, priority (1 = money query probed daily, 3 = weekly), article_id (the post that should be cited), active.
- visibility_results_ingest Store one agent-side probe run (the blog-assessment skill: ~30 queries × engines, the owner's OPENROUTER_API_KEY etc.
- indexing_status read-onlyIndexNow submissions (publish pings to api.indexnow.org — 200/202 = accepted) and the recent publish events for the tenant, optionally for one URL.
- tracking_setup_status read-onlyWhat is configured for this tenant's analytics and what is missing, by NAME: Umami (script slot + API for ingestion), GA4 (BYO, consent-gated), Search Console (property + service account), Bing, IndexNow, the probe query list, the nightly cron.
Context MCP
Context is the shared workspace for your goals and how agents execute them across every host you use. The Shared Space works the moment you sign in with Google; pairing your iPhone in the Context app unlocks Private Spaces and the Personal domains — memories, logs, people, health, calendar and skills — that live only on your phone.
https://mcp.onecontext.me/mcpStart 1 · shared
- start_context read-onlyUse this when you need to orient yourself in Context before doing anything else — at the top of a session, whenever you are unsure which tool fits, or when the user greets Nomi or says "Nomi, get me started".
Discovery 1 · shared
- search_context read-onlyUse this when you need to find something by words rather than by id — an Epic, Issue, Artifact or memory whose id you do not have.
Space 1 · shared
- list_spaces read-onlyUse this when you need to know which Spaces exist before naming one in a `space` argument.
Epic 5 · shared
- list_epics read-onlyUse this when you need to survey the goals in flight rather than open one specific Epic.
- get_epic read-onlyUse this when you need to see one goal in full — its blueprint, derived status, child Issues, Artifacts and recent activity in a single read.
- create_epic Use this when you need to open a new goal in a Space, optionally seeding its first Issues in the same call.
- update_epic Use this when you need to change one Epic's title, goal, labels or Space — never its status, which is derived from its Issues.
- delete_epic destructiveUse this when you need to remove an Epic that should not exist at all — this is also how you retire work that would otherwise be `canceled`, which v3 does not expose as a state.
Issue 6 · shared
- list_issues read-onlyUse this when you need to see the queue rather than one Issue — what is open, what is yours, what sits under an Epic.
- get_issue read-onlyUse this when you need to read one Issue in full before acting on it — acceptance criteria, state, `blocked_by` edges, child Issues, Artifacts, comments and delivery/claim state in a single read.
- create_issues Use this when you need to add one or more units of work under an Epic or under another Issue — decomposition in v3 is always child Issues, never a checklist.
- update_issues Use this when you need to edit, re-state, re-parent or re-block existing Issues — including moving one to `in_progress` or `in_review`.
- complete_issues Use this when you need to move Issues to `done` because the work is finished and accepted.
- delete_issues destructiveUse this when you need to remove Issues that should not exist at all — including work that would otherwise be `canceled`, which v3 does not expose.
Conversation 1 · shared
- post_comment Use this when you need to say something on the record — progress narration, an answer to the user's review comment, or a note anchored to a passage of an Artifact.
Review 3 · shared
- request_review Use this when you need to get a person to decide something before work continues — an Epic's plan, an Issue's outcome, or an Artifact's content.
- claim_issue Use this when you need to put on the record, with evidence, that an Issue's acceptance criteria are met (ADR-0008).
- verify_issue Use this when you need to record how you actually checked a claim — the method, the per-criterion results and the evidence.
Artifact 7 · shared
- list_artifacts read-onlyUse this when you need to find the reviewable documents attached to a Space or to one Epic or Issue.
- get_artifact read-onlyUse this when you need to read one Artifact — its metadata, its content or a resource link to it, its revision list and its comment threads.
- attach_artifact Use this when you need to attach a reviewable document to a piece of work — a spec, a decision record, a report, a file.
- revise_artifact Use this when you need to change an Artifact's content — v3 appends an immutable revision and advances the head rather than overwriting, so the old text stays citable.
- update_artifact Use this when you need to change only an Artifact's title, labels, kind or Space, leaving its content exactly as it is.
- delete_artifacts destructiveUse this when you need to remove Artifacts from the account entirely.
- get_artifact_transfer read-onlyUse this when you need to check whether an `attach_artifact` upload plan you followed actually completed.
Changes 2 · shared
- get_changes read-onlyUse this when you need to know what happened while you were working — review decisions, comments, and operations the user's phone applied.
- list_mutation_receipts read-onlyUse this when you need to know whether a queued write actually reached the user's device, instead of assuming that acceptance meant application.
Space 2 · paired
- create_space Use this when you need to give work its own container because it genuinely does not belong in `shared`, `personal` or `work`.
- delete_space destructiveUse this when you need to remove an empty private Space.
Memories 4 · paired
- list_memories read-onlyUse this when you need to read what the user captured on their phone, most recent first — the raw material behind briefings and coaching.
- get_memory read-onlyUse this when you need to read one memory in full — raw text, the AI-enhanced version, extracted logs and people links, and a deep link that opens it on the phone.
- save_memories Use this when you need to persist something the user told you beyond this session — a memory entry, or an atomic durable fact (a preference, a decision, biographical detail).
- delete_memories destructiveUse this when you need to remove whole memories from the user's phone — their extracted logs and todos go with them.
Logs 4 · paired
- list_logs read-onlyUse this when you need to read the user's atomic logged events — meals, workouts, expenses, or health readings (blood pressure, body metrics, HealthKit-mirrored items) — one row per event.
- log_meal Use this when you need to give the user a meal to eat — meal prep, a restaurant order, a macro-targeted suggestion.
- log_workout Use this when you need to give the user exercise to do.
- delete_logs destructiveUse this when you need to remove logged rows that are wrong — a mis-transcribed meal, a duplicated expense.
People 6 · paired
- list_people read-onlyUse this when you need to read the roster the user opted to share — names, aliases, organizations.
- get_person read-onlyUse this when you need to read everything Context knows about one person — the profile the user synced, and optionally the memories linked to them.
- create_people Use this when you need to create a profile for someone the user talks about who has none.
- update_people Use this when you need to record something you learned about people the user already has profiles for — contact-card fields, or `remembered_facts` for what the user TOLD you.
- delete_people destructiveUse this when you need to remove app-created or junk profiles that should not exist at all — and ONLY those.
- merge_people Use this when you need to fold several profiles of the same real person into one — this is the durable fix for duplicate contacts, unlike deletion.
Health 2 · paired
- query_health_samples read-onlyUse this when you need to read raw HealthKit rows the user opted into agent collection — steps, heart rate, sleep, HRV, glucose.
- summarize_health read-onlyUse this when you need to answer a question about a trend or a total rather than individual readings — daily steps, weekly sleep, monthly weight.
Calendar 2 · paired
- list_calendar_events read-onlyUse this when you need to read the user's schedule — what a day held, who was in a meeting, what is coming up.
- get_calendar_event read-onlyUse this when you need to read one meeting in full — attendees and which resolve to people, organizer, location, join link, and the memories, Artifacts and Issues attached to it.
Skills 3 · paired
- list_skills read-onlyUse this when you need to find the playbooks the user or an agent stored on the phone — how THIS user wants a recurring job done.
- get_skill read-onlyUse this when you need to read the full markdown of a stored skill that covers the job you are about to do.
- save_skill Use this when you need to keep a playbook for next time — omit `skill_id` to add a new skill, pass it to overwrite an existing one.
Content 2 · paired
- request_content Use this when you need to fetch device-held content that routine sync deliberately does not carry — a document body, a contact field, a health sample.
- get_content_request read-onlyUse this when you need to know whether the phone has answered a `request_content` you are waiting on.