munim
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_clientsA | List every client and which providers each can actually reach.
So this asks each provider, concurrently. Pass
|
| find_across_clientsA | Answer one question across every client at once. Read-only by design: this is the one place that spans containers, so it
can never mutate. |
| ask_across_clientsA | Ask one question about every client at once, using their own accounts. Where Read-only by construction: every tool it holds is filtered to those the provider marks read-only, so a tool that changes anything is not present to be called. Naming one client is what unlocks writes (D5). |
| audit_all_clientsA | Check every client at once and report only what needs attention. The thing an operator actually wants running: silent when everything passes, and a list when it does not. Nobody runs thirteen checks by hand on a dozen clients, which is why the failures that break nothing visible survive for weeks. Read-only across every client, like |
| work_on_clientA | Do something inside one client's accounts, using their own tools. The other half of read across, write within. The agent is built with that client's sessions and no others, so a request needing a second account has nothing to reach with rather than a rule telling it not to. Every change is written to the run log as it happens: open the control room to watch, or read it back afterwards. |
| list_provider_toolsA | What this client's account with this provider can actually be asked to do. Every provider here runs its own MCP server with its own tools, and
this returns them: the name, what it does, its argument schema, and
whether the provider marks it read-only. Pair it with
This is how you do work Munim has no verb for. There is no per-operation
tool to look for, because modelling one provider's tools as another
tool's parameters is a losing game: Cloudflare's
|
| call_provider_toolA | Call one of a provider's own tools with one client's credentials. The write half of the passthrough. Munim's part is the credential: the call names a client and resolves
that client's session alone, so one call touches exactly one account,
and it is recorded in the run log with the tool and the arguments it
was given. Read No language model is involved, which is the point. This works with
|
| call_provider_apiA | One HTTP call to a provider's own API, with one client's credential. The way down a layer when a provider's MCP server does not publish what you need. Vercel's publishes no environment-variable write and no way to attach a domain to a project, so those are reachable through no tool at any layer; this is how they become reachable.
Every call is recorded as a mutation whatever the method, because an HTTP verb is a convention and not an annotation, and this will not claim a read on the strength of one. The response body is deliberately not logged: a raw environment endpoint returns secret values. Works for cloudflare, vercel and resend, the three whose REST base URL and header shape Munim knows. It is not a universal escape hatch. |
| plan_mail_setupA | What setting up email for this client's domain would change. Reads what is already published and returns every record with the
action it would take: create, update, merge or unchanged. Changes no
DNS. Pair it with The one write here is creating the sending domain in the operator's own Resend account, because Resend does not publish the DKIM and SPF values a plan is made of until it exists. That adds nothing to anyone's DNS. |
| apply_mail_setupA | Carry out a plan from
|
| add_clientA | Register a client. Holds no credential - only a name and a domain. |
| client_statusC | What is known about one client. Never returns a credential.
|
| connect_providerA | Connect one provider for one client using a credential you paste. Prefer |
| checkB | Check a client or a domain. Registers it on first mention.
|
| fixA | Check a client's domain, then repair what can be repaired safely.
Anything that would replace a record somebody already published stops
and waits for a person. Approve it in the control room, or call
With agents off the checks still run and their findings still stand,
exactly as |
| launch_statusA | Read a run without waiting on it. A launch polls DNS and can outlast a single tool call, so progress is read from the run log rather than held open. |
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/vishalsg42/munim'
If you have feedback or need assistance with the MCP directory API, please join our Discord server