Skip to main content
Glama
main.py8 kB
# generated by fastapi-codegen: # filename: openapi.yaml # timestamp: 2025-06-29T03:53:55+00:00 import argparse import json import os from typing import * from typing import Union from autogen.mcp.mcp_proxy import MCPProxy from autogen.mcp.mcp_proxy.security import BaseSecurity from fastapi import Query from models import ( ComptageReponse, ComptageRequest, Credit, CreditResponse, DelListeNoire, Erreur, GetListeNoire, HLRReponse, HLRrequest, LISTENOIREReponse, RapportCampagne, REPERTOIREcreatereponse, REPERTOIREcreaterequest, REPERTOIREmodifreponse, REPERTOIREmodifrequest, SetlisteNoire, ShortlinkRequest, ShortlinkResponse, SMSReponse, SMSRequest, SmsUniqueRequest, SubaccountAddRequest, SubaccountAddResponse, SubaccountRequest, SubaccountResponse, ) app = MCPProxy( contact={ 'email': 'support@isendpro.com', 'name': 'iSendPro Support Team', 'url': 'https://www.isendpro.com/', 'x-twitter': 'isendpro', }, description='[1] Liste des fonctionnalités :\n- envoi de SMS à un ou plusieurs destinataires,\n- lookup HLR,\n- récupération des récapitulatifs de campagne,\n- gestion des répertoires,\n- ajout en liste noire.\n- comptage du nombre de caractères des SMS\n\n[2] Pour utiliser cette API vous devez:\n- Créer un compte iSendPro sur https://isendpro.com/\n- Créditer votre compte \n - Remarque: obtention d\'un crédit de test possible sous conditions\n- Noter votre clé de compte (keyid)\n - Elle vous sera indispensable à l\'utilisation de l\'API\n - Vous pouvez la trouver dans le rubrique mon "compte", sous-rubrique "mon API"\n- Configurer le contrôle IP\n - Le contrôle IP est configurable dans le rubrique mon "compte", sous-rubrique "mon API"\n - Il s\'agit d\'un système de liste blanche, vous devez entrer les IP utilisées pour appeler l\'API\n - Vous pouvez également désactiver totalement le contrôle IP\n', title='API iSendPro', version='1.1.1', servers=[ {'url': 'https://apirest.isendpro.com/cgi-bin'}, {'url': 'http://apirest.isendpro.com/cgi-bin'}, ], ) @app.get( '/campagne', description=""" Retourne les SMS envoyés sur une période donnée en fonction d'une date de début et d'une date de fin. Les dates sont au format YYYY-MM-DD hh:mm. Le fichier rapport de campagne est sous la forme d'un fichier zip + contenant un fichier csv contenant le détail des envois. """, tags=['sms_operations'], ) def get_campagne( keyid: str, rapport_campagne: RapportCampagne = Query(..., alias='rapportCampagne'), date_deb: str = ..., date_fin: str = ..., ): """ Retourne les SMS envoyés sur une période donnée """ raise RuntimeError("Should be patched by MCPProxy and never executed") @app.post( '/comptage', description=""" Compte le nombre de SMS necessaire à un envoi """, tags=['character_counting'], ) def comptage(body: ComptageRequest): """ Compter le nombre de caractère """ raise RuntimeError("Should be patched by MCPProxy and never executed") @app.get( '/credit', description=""" Retourne le credit existant associe au compte. """, tags=['credit_management'], ) def get_credit(keyid: str, credit: Credit = ...): """ Interrogation credit """ raise RuntimeError("Should be patched by MCPProxy and never executed") @app.post( '/dellistenoire', description=""" Supprime un numero en liste noire """, tags=['blacklist_management'], ) def del_liste_noire( keyid: str, del_liste_noire: DelListeNoire = Query(..., alias='delListeNoire'), num: str = ..., ): """ Ajoute un numero en liste noire """ raise RuntimeError("Should be patched by MCPProxy and never executed") @app.post( '/getlistenoire', description=""" Retourne un fichier csv zippé contenant la liste noire """, tags=['blacklist_management'], ) def get_liste_noire( keyid: str, get_liste_noire: GetListeNoire = Query(..., alias='getListeNoire') ): """ Retourne le liste noire """ raise RuntimeError("Should be patched by MCPProxy and never executed") @app.post( '/hlr', description=""" Réalise un lookup HLR sur les numéros """, tags=['number_validation'], ) def get_hlr(body: HLRrequest): """ Vérifier la validité d'un numéro """ raise RuntimeError("Should be patched by MCPProxy and never executed") @app.post( '/repertoire', description=""" Cree un nouveau répertoire et retourne son identifiant. Cet identifiant pourra être utilisé pour ajouter ou supprimer des numéros via l'API. """, tags=['directory_management'], ) def repertoire_crea(body: REPERTOIREcreaterequest): """ Gestion repertoire (creation) """ raise RuntimeError("Should be patched by MCPProxy and never executed") @app.put( '/repertoire', description=""" Ajoute ou supprime une liste de numéros à un répertoire existant. """, tags=['directory_management'], ) def repertoire(body: REPERTOIREmodifrequest): """ Gestion repertoire (modification) """ raise RuntimeError("Should be patched by MCPProxy and never executed") @app.post( '/setlistenoire', description=""" Ajoute un numero en liste noire. Une fois ajouté, les requêtes d'envoi de SMS marketing vers ce numéro seront refusées. """, tags=['blacklist_management'], ) def set_liste_noire( keyid: str, setliste_noire: SetlisteNoire = Query(..., alias='setlisteNoire'), num: str = ..., ): """ Ajoute un numero en liste noire """ raise RuntimeError("Should be patched by MCPProxy and never executed") @app.post( '/shortlink', description=""" add a shortlink """, tags=['shortlink_management'] ) def add_shortlink(body: ShortlinkRequest): """ add a shortlink """ raise RuntimeError("Should be patched by MCPProxy and never executed") @app.post( '/sms', description=""" Envoi un sms vers un unique destinataire """, tags=['sms_operations'], ) def send_sms(body: SmsUniqueRequest): """ Envoyer un sms """ raise RuntimeError("Should be patched by MCPProxy and never executed") @app.post( '/smsmulti', description=""" Envoi de SMS vers 1 ou plusieurs destinataires """, tags=['sms_operations'], ) def send_sms_multi(body: SMSRequest): """ Envoyer des SMS """ raise RuntimeError("Should be patched by MCPProxy and never executed") @app.post( '/subaccount', description=""" Ajoute un sous compte """, tags=['user_subaccount_management'], ) def subaccount_add(body: SubaccountAddRequest): """ Ajoute un sous compte """ raise RuntimeError("Should be patched by MCPProxy and never executed") @app.put( '/subaccount', description=""" Edit a subaccount """, tags=['user_subaccount_management'], ) def subaccount_edit(body: SubaccountRequest): """ Edit a subaccount """ raise RuntimeError("Should be patched by MCPProxy and never executed") if __name__ == "__main__": parser = argparse.ArgumentParser(description="MCP Server") parser.add_argument( "transport", choices=["stdio", "sse", "streamable-http"], help="Transport mode (stdio, sse or streamable-http)", ) args = parser.parse_args() if "CONFIG_PATH" in os.environ: config_path = os.environ["CONFIG_PATH"] app.load_configuration(config_path) if "CONFIG" in os.environ: config = os.environ["CONFIG"] app.load_configuration_from_string(config) if "SECURITY" in os.environ: security_params = BaseSecurity.parse_security_parameters_from_env( os.environ, ) app.set_security_params(security_params) mcp_settings = json.loads(os.environ.get("MCP_SETTINGS", "{}")) app.get_mcp(**mcp_settings).run(transport=args.transport)

Latest Blog Posts

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/ag2-mcp-servers/api-isendpro'

If you have feedback or need assistance with the MCP directory API, please join our Discord server