Listar os agentes não registrados
Leia os chamadores que o gateway MCP já viu e depois oficialize um como identidade ou mantenha-o rastreado como shadow.
mcp.shadowidentity.enroll
Leia os chamadores que o gateway MCP já viu e depois oficialize um como identidade ou mantenha-o rastreado como shadow.
mcp.shadowidentity.enrollPasse ações de agentes, hashes de conteúdo, checagens de API, DNS, webhooks, chamadas de LLM e commits git pela Intramedial. Receba um recibo assinado que todos verificam – sem confiar em nós.
Surgem agentes que ninguém inscreveu. Cada chamada pelo gateway MCP deixa um evento shadow com o DID e a ferramenta. Você os lê, compara os chamadores com seu registro e decide o que cada um é.
O código lê a chave de INTRAMEDIAL_KEY. Guarde-a no seu shell ou no seu cofre de segredos, nunca em um arquivo que você faz commit. Chamadas que exigem uma pessoa logada não podem usar chave: o console as faz.
Encaminhe uma chamada pelo gateway como um agente que ninguém inscreveu.
events contém os 50 mais recentes, cada um com actorDid, tool e mode.
{
"events": [
{
"at": "2026-11-01T09:14:02.118Z",
"event": {
: ,
: ,
: ,
:
}
}
],
: ,
:
}mcp.shadowmcp-shadowidentity.enrollidentity-enroll
curl -sS -X POST https://api.intramedial.com/api/v1/acp/mcp/enforce \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"actorDid": "did:web:unknown.example:agent:scraper",
"tool": "fs.write"
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/mcp/enforce", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
actorDid: "did:web:unknown.example:agent:scraper",
tool: "fs.write",
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/mcp/enforce",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"actorDid": "did:web:unknown.example:agent:scraper",
"tool": "fs.write",
},
timeout=30,
)
print(res.status_code, res.json())A rota devolve os 50 eventos mais recentes com o DID, a ferramenta e o modo. Ela não diz se um chamador está inscrito; compare os DIDs com a lista de identidades para achar os desconhecidos.
curl -sS https://api.intramedial.com/api/v1/acp/mcp/shadow \
-H "Authorization: Bearer $INTRAMEDIAL_KEY"const res = await fetch("https://api.intramedial.com/api/v1/acp/mcp/shadow", {
headers: { Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`, },
});
const body = await res.json();
for (const { at, event } of body.events) console.log(at, event.actorDid, event.tool, event.mode);import os, requests
res = requests.get(
"https://api.intramedial.com/api/v1/acp/mcp/shadow",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
timeout=30,
)
body = res.json()
for e in body["events"]:
print(e["at"], e["event"]["actorDid"], e["event"]["tool"], e["event"]["mode"])Inscreva o DID como identidade, com um dono e um tipo. Ele passa a resolver para um único agente, e seu perfil de confiança começa em 50.
curl -sS -X POST https://api.intramedial.com/api/v1/acp/identity/enroll \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"did": "did:web:unknown.example:agent:scraper",
"displayName": "Docs scraper",
"kind": "partner"
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/identity/enroll", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
did: "did:web:unknown.example:agent:scraper",
displayName: "Docs scraper",
kind: "partner",
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/identity/enroll",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"did": "did:web:unknown.example:agent:scraper",
"displayName": "Docs scraper",
"kind": "partner",
},
timeout=30,
)
print(res.status_code, res.json())Inscreva com shadow igual a true para rastrear um chamador sem oficializá-lo. Ele continua visível na lista, com todas as chamadas que fez, e um chamador recusado também continua visível.
curl -sS -X POST https://api.intramedial.com/api/v1/acp/identity/enroll \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"did": "did:web:unknown.example:agent:scraper",
"displayName": "Docs scraper",
"kind": "partner",
"shadow": true
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/identity/enroll", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
did: "did:web:unknown.example:agent:scraper",
displayName: "Docs scraper",
kind: "partner",
shadow: true,
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/identity/enroll",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"did": "did:web:unknown.example:agent:scraper",
"displayName": "Docs scraper",
"kind": "partner",
"shadow": True,
},
timeout=30,
)
print(res.status_code, res.json())Copiado de: /docs/mcp-shadow
O livro-razão é somente de acréscimo e selado sob raízes Merkle. A hora de uma entrada é o relógio da própria Intramedial, e um bundle assinado pode ser conferido offline com a chave publicada.
Peça ao gateway MCP o veredito do Intralock sobre a chamada de ferramenta de um agente, leia o motivo e liste os chamadores que ele já viu.
mcp.enforceRegistre um agente sob o próprio DID, com um nome e um tipo, para que cada ação resolva para um único agente.
identity.enrollLeia cada agente, lease, em espera e quarentena que o plano mantém, em uma chamada, sem inventário para manter à mão.
coordination.fleetmapUm e-mail curto quando somamos receitas. Nenhum outro e-mail, e você cancela por qualquer mensagem.
Sem conta: 35 chamadas em 7 dias nas rotas attest, com recibos marcados como teste. Cadastre-se quando quiser seguir adiante.